磅签到#define函数参数

mar*_*rsh 4 c++

英镑符号在这行代码中表示什么?

#define CONDITION(x)    if(!(x)){ HandleError(#x,__FUNCTION__,__LINE__);return false;}
Run Code Online (Sandbox Code Playgroud)

这就是它的调用方式:

CONDITION(foo != false);
Run Code Online (Sandbox Code Playgroud)

Mik*_*our 10

#宏参数之前的单个参数将其转换为字符串文字.

#define STRINGIFY(x) #x
STRINGIFY(hello)   // expands to "hello"
Run Code Online (Sandbox Code Playgroud)

在您的示例中,字符串将是"foo != false",因此错误消息显示正在测试的代码.

##宏内的两个标记之间将它们组合成一个单一的令牌

#define GLOM(x,y) x ## y
GLOM(hello, World) // expands to helloWorld
Run Code Online (Sandbox Code Playgroud)