, __VA_ARGS__) #endif ...
本文说的 VA ARGS ,就是一个可变参数宏,与printf中可变参数的宏定义一个道理,是新C 规范中增加的。 VA ARGS 详情内容 .关于 VA ARGS VA ARGS 它是一个可变参数的宏,就是将左边宏中 ... 的内容原样抄写在右边 VA ARGS 所在的位置。 要注意的是,printf 的输出格式是括号内左边是字符串,右边是变量,而且右变量与左输出格式是一一对应的,不对应就会出错。 ...
2019-12-16 13:35 0 283 推荐指数:
, __VA_ARGS__) #endif ...
1. 调试功能一般会使用到宏+可变参数的方式 1.1 ##__VA_ARGS__ 之详细解析 例如: case A. #define my_print1(...) printf(__VA_ARGS__) my_print1("i=%d,j=%d\n ...
,如: 其中,...表示可变参数列表,__VA_ARGS__在预处理中,会被实际的参数集(实参列表)所替换。 同时g ...
【1】变长参数的宏定义以及__VA_ARGS__ 在C99标准中,我们就已经可以使用变长参数的宏定义。 变长参数的宏定义是个神马?就是在宏定义的参数列表中最后一个参数为省略号。 而现在C++ 11中,使用预定义宏__VA_ARGS__可以在宏定义的实现部分替换省略号所代表的字符串。 原书 ...
在GNU C中,宏可以接受可变数目的参数,就象函数一样,例如: #define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt, ##arg) 用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使用可变参数 ...
Returns NARG, the number of arguments contained in __VA_ARGS__ before expansion as far as NARG is >0 and <64 (cpp limits): [..] stands ...
# 用来把参数转换成字符 #include <stdio.h> #define FUN(X) (printf("%s=%d\n",#X,X)) /* #用来把参数 ...
1.#的用法 假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化(stringizing). 第一次调用宏时使用 ...