在C和C++中,我可以使用包含空格的宏定义吗?

INS*_*INS 3 c c++ macros

我想知道宏定义是否可以包含空格.我们以此代码为例:

#define MACRO_PARAM int param2

int function(int param1, MACRO_PARAM)
{
    return param1+param2;
}
Run Code Online (Sandbox Code Playgroud)

这适用于Visual Studio 8和gcc 3.4.5(mingw).对我来说这暂时还不错,但这是标准吗?或者我可以在不同的编译器中依赖这种行为吗?

谢谢,

尤利安

PS:回答这个问题why would you wanna do that?:我正在使用bison flex进行项目,我正在尝试制作一些可重入的东西(我需要为函数参数声明一些宏).

Bri*_*per 6

您需要使用\结束定义的每一行(除了最后一行).