有可能做这样的事情:
#define F(x) \
#ifdef DOUBLE \
2*x \
#else \
x \
#endif
Run Code Online (Sandbox Code Playgroud)
所以当我使用时F,它扩展到什么取决于宏是否DOUBLE被定义?我不这么认为,但我很有希望.GNU扩展很好.
编辑 为了回答一些答案,我实际上是用它来做一些代码生成,代码稍有不同,具体取决于它的定义位置.由于包含某些文件的顺序以及需要定义相关宏的位置,以此方式切换它需要一些因子.我可能不得不这样做,但如果我不必从这个角落重新点燃自己,我会很激动!