我可以在 C 中实现这个吗?
#define X abc
然后X_menu();
将被预处理为abc_menu();
在另一个版本中
如果我define X def
然后X_menu();
将为def_menu();
我确信应该有一种方法,但我无法理解。
答案 0 :(得分:3)
不,你不会想要这种行为,因为在每个名字中替换每个X
都会非常不安全和困难。但是,您可以使用宏函数来执行类似的操作
#define X(F) abc##F
X(_menu();)
##
是宏连接,因此X(_menu();)
将扩展为abc_menu();
正如Roger指出的那样,宏也可以使用语法
X(_menu)();
你可能会觉得更容易阅读