有没有办法使C宏关键字不可知?

时间:2010-04-27 21:02:46

标签: c++ c macros

有没有办法在宏中连接关键字并得到
C表现得更加动态,如:

#define macro(fun,ction,var,iable) function(variable)

我知道其他语言中存在此类事物。

4 个答案:

答案 0 :(得分:6)

您可以使用##在宏中连接名称 fun ## ction ...

答案 1 :(得分:2)

没有。尽管迈克尔说##,但它在C或C ++查看关键字之前应用(作为所有预处理),甚至使用它生成任何预处理关键字都会使预处理器崩溃。

因此,作为一项规则,如果直接输入某些内容时无法编译,则预处理器生成时也不会编译。

答案 2 :(得分:0)

它的使用有一些注意事项(例如,你必须跳过一些环节来连接其他宏扩展的结果),但是GCC文档讨论了基本形式:

http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html

答案 3 :(得分:0)