使用#define更改函数名称

时间:2014-12-15 20:12:01

标签: c gcc c-preprocessor

我可以在 C 中实现这个吗?

#define X abc

然后X_menu();将被预处理为abc_menu();

在另一个版本中 如果我define X def 然后X_menu();将为def_menu();

我确信应该有一种方法,但我无法理解。

1 个答案:

答案 0 :(得分:3)

不,你不会想要这种行为,因为在每个名字中替换每个X都会非常不安全和困难。但是,您可以使用宏函数来执行类似的操作

#define X(F) abc##F
X(_menu();)

##是宏连接,因此X(_menu();)将扩展为abc_menu();

正如Roger指出的那样,宏也可以使用语法

X(_menu)();

你可能会觉得更容易阅读