2017-04-09 82 views
-1

我想在帕斯卡(freepascal)中定义的东西。 在C++中,你可以通过变量定义的宏是这样的:传递参数在帕斯卡定义

#define REP(i,k) for(int i=0; i<k; i++) 

你怎么能在帕斯卡做呢?

我在第一行添加了{$MACRO ON}命令,因此它可以运行正常定义而没有像{$define lala:='hello world'}这样的错误。

但是,当我尝试{define lala(i):=i}程序出现错误。

如何在Pascal中传递可变参数?

+2

你不想这样做。在C++中这是一个糟糕的主意。不要复制不好的想法。 –

+0

根据“程序员指南”第1.2.48节的内容:“在{$ MACRO ON}状态下,编译器允许使用C型(尽管没有详细说明)宏。” 宏“。请注意“不太精细”部分。我不认为参数是支持的。 – tonypdmtr

回答

3

使用外部预处理器,并在结果中使用Pascal编译器之前在构建系统中执行它。

FPC宏系统不适用于元编程,而是用于在头文件和紧凑型启用/禁用逻辑中调用约定宏(如home-brewn声明和其他调试日志代码),并且不支持参数化。

非卫生宏从根本上与Pascal单元系统不兼容,卫生宏由内联函数/程序覆盖。

+0

感谢您的回答。我只想用pascal编写一些模板,就像C++ haha​​ha一样。那么我只会使用函数和过程。 –

+0

FPC具有泛型。 –