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