磅签到#define函数参数

时间:2015-02-18 14:15:46

标签: c++

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

#define CONDITION(x)    if(!(x)){ HandleError(#x,__FUNCTION__,__LINE__);return false;}

这就是它的召唤方式:

CONDITION(foo != false);

1 个答案:

答案 0 :(得分:9)

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

#define STRINGIFY(x) #x
STRINGIFY(hello)   // expands to "hello"

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

宏中两个令牌之间的双##将它们组合成一个令牌

#define GLOM(x,y) x ## y
GLOM(hello, World) // expands to helloWorld