如何在C++中实现无操作宏?
#include <iostream>   
#ifdef NOOP       
    #define conditional_noop(x) what goes here?   
#else       
    #define conditional_noop(x) std::cout << (x)   
#endif   
int main() {       
    conditional_noop(123);   
}我希望在定义NOOP时不执行任何操作,而在未定义NOOP时打印"123“。
发布于 2009-08-20 14:45:40
正如前面提到的--什么都没有。
此外,您的代码中还存在打印错误。
它应该是#else而不是#elif。如果是#elif,则后跟新条件
#include <iostream>   
#ifdef NOOP       
    #define conditional_noop(x) do {} while(0)
#else       
    #define conditional_noop(x) std::cout << (x)   
#endif  祝你编码愉快!编辑:根据另一个答案中的建议,添加了do结构以实现健壮性。
发布于 2009-08-20 14:46:44
虽然将其留空是显而易见的选择,但我会选择
#define conditional_noop(x) do {} while(0)这个技巧显然是无操作的,但是会迫使您在conditional_noop(123)后面写一个分号。
发布于 2009-08-20 14:34:41
将宏定义为void可以很好地传达您的意图。
#ifdef NOOP
    #define conditional_noop(x) (void)0
#elsehttps://stackoverflow.com/questions/1306611
复制相似问题