2019-08-13 22:36发布
csmjmcc 发表于 2017-9-28 08:18 c99规范中:变元列表 宏可以带变元,在宏定义中用省略号(...)表示。 内部预处理标识符__VA_ARGS__ ...
最多设置5个标签!
c99规范中:变元列表
宏可以带变元,在宏定义中用省略号(...)表示。
内部预处理标识符__VA_ARGS__决定变元将在何处得到替换。
例:#define MySum(...) sum(__VA_ARGS__) 语句MySum(k,m,n); 将被转换成:sum(k, m, n);
变元还可以包含变元。
例: #define compare(compf, ...) compf(__VA_ARGS__) 其中的compare(strcmp,"small", "large"); 将替换成:strcmp("small","large");
你的例子:#define EXPAND_WRAPPER( __NEXTLEVEL__, ...) __NEXTLEVEL__( __VA_ARGS__ ),表示你可能有一些函数,这些函数参数个数不是固定的,可能是变元的,故需要弄一个可扩展封装包 EXPAND_WRAPPER( __NEXTLEVEL__, ...),视具体函数变元而扩张。
点赞
一周热门 更多>