有没有办法定义可以有一个或零参数的宏?
我需要在这个例子中使用一些东西:
#define MY_RETURN(ret) return ret;
void foo(){
MY_RETURN();
}
int foo_integer(){
MY_RETURN(1);
}
我无法找到解决方法。
答案 0 :(得分:2)
在C99及更高版本中,可以使用可变参数宏。
C11(n1570),§6.10预处理指令
# define identifier lparen identifier-list , ... ) replacement-list new-line
您的宏可能类似于:
#define MY_RETURN(...) return __VA_ARGS__
如果您需要计算参数,可以查看here。
答案 1 :(得分:0)
考虑这样的事情:
#define MY_RETURN(ret) { \
int args[] = {ret}; \
if(sizeof(args) > 0) \
return ret; \
}
答案 2 :(得分:0)
定义两个MY_RETURN宏,一个带参数,一个没有!一种重载,但对于宏。