这个宏是什么意思 求助

2019-08-13 22:36发布

#define EXPAND_WRAPPER( __NEXTLEVEL__, ...)  __NEXTLEVEL__( __VA_ARGS__ )
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
csmjmcc
1楼-- · 2019-08-14 02:20
本帖最后由 csmjmcc 于 2017-9-28 08:21 编辑

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__, ...),视具体函数变元而扩张。 


ARF1939261764
2楼-- · 2019-08-14 06:19
查一下不久得了
jermy_z
3楼-- · 2019-08-14 11:54
csmjmcc 发表于 2017-9-28 08:18
c99规范中:变元列表   
宏可以带变元,在宏定义中用省略号(...)表示。
内部预处理标识符__VA_ARGS__ ...

点赞
周亚龙
4楼-- · 2019-08-14 17:23
666   

一周热门 更多>