可能重复:
如何使预处理器在宏展开结果中插入换行符?
#define IDENTIFIER { /*new line here*/\
my_multiline(); /*new line here*/\
macro(); /*new line here*/\
} /*new line here*/
我能否强制C预处理器在其扩展中生成新行?我不认为有标准的方法来做到这一点,但我不介意针对Visual C++(2008)和gcc的特定平台的黑客方式。
我不想通过m4或单独的预处理器来实现这一点。
为什么我要问这个问题:
这更多的只是出于好奇心。由于这是一个黑客,我不会在生产中尝试这样做,但我想知道是否能够这样做。几天前,我遇到了这个问题: 您可以关闭从特定位置包含的任何头文件的(特定)编译器警告吗? 这是一个我自己想要解决的问题。我考虑创建一个宏来包含一个头文件,但是正确的pragma可以在包含之前禁用警告,包含我想要关闭警告的头文件,在包含后启用警告。
当然,我可以创建一个脚本来生成带有警告和包含的模拟包含文件。
我的第一个问题是,由于#include
是一个预处理指令,使用宏来生成它有点无用。但后来我找到了这个答案:
通过这个答案,我相信如果我能强制编译器在展开时生成新行,就可以生成特殊的包含宏。
我现在在家里,但明天上班时我会发布我的代码。
#define
需要一个标识符。而且空格有什么用呢?你永远看不到扩展后的代码。 - GManNickG