c - 可以有零个或一个参数的通用宏

标签 c macros c-preprocessor

<分区>

有什么方法可以定义可以有一个或零个参数的宏吗?

我需要在这个例子中使用一些东西:

#define MY_RETURN(ret) return ret;

void foo(){
    MY_RETURN();
}

int foo_integer(){
    MY_RETURN(1);
}

我无法为此找到解决方案。

最佳答案

在 C99 及更高版本中,可以使用可变参数宏。

C11 (n1570), § 6.10 Preprocessing directives

# define identifier lparen identifier-list , ... ) replacement-list new-line

您的宏可能类似于:

#define MY_RETURN(...) return __VA_ARGS__

如果你需要计算参数,你可以检查here例如。

关于c - 可以有零个或一个参数的通用宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15249968/

相关文章:

c - 预处理器 c,[常量或变量]

c - 旋转矩阵,使 Up vector 等于另一个 vector

c++ - 解释 C++ 中的位测试宏

c++ - 类似命名空间的宏功能

c - 如何使用包含宏名称的字符串获取宏的值?

c++ - 在 #ifdef 检查中允许自定义宏

c - 如何在特定位置分配内存

c - 初始化C中的字符串结尾

c - const 结构成员作为函数参数发送时是否应该更改?

c++ - 有没有办法让 C 宏关键字不可知?