__VA_ARGS__是C语言设定的一个预定义宏,用于处理可变参数的参数列表。通常用在宏定义中,以便宏可以接收不定数量的参数,并将他们作为整体处理。 通常的函数参数列表都是固定的,但也存在着不定参数数量的函数,如:printf,为了定义可以处理不同参数个数的宏,C99标准引入了VA_ARGS,下列的代码均在C99及C99以上标准的...
VA_ARGS是一个可变参数的宏,是新的 C99 规范中新增的,目前似乎只有 gcc 支持( VC 从 VC2005 开始支持)。 VA_ARGS需要配合 define 使用,总体来说就是将左边宏中 .. 的内容原样抄写在右边VA_ARGS所在的位置; 举个例子: #definemyprintf(...)printf( __VA_ARGS__) 示例代码如下: /***/ //@Author:猿...
num); char firstchar = va_arg(args, int); printf("%c", firstchar); for (int i = 0; i < num; i++) { int val = va_arg(args, int ); printf("%d", val); } va_end(args); printf("\n"); } int main() { print_numbers(4,'c',12,13,14)...
printf( __VA_ARGS__) 示例代码如下:/***/ //@Author:猿说编程 //@Blog(个人博客地址): www.codersrc.com //@File:C语言教程 - C语言 __VA_ARGS__ //@Time:2021/07/10 08:00 //@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累! /***/ #include <stdio...
一.__VA_ARGS__简介 二.__VA_ARGS__使用 1.__VA_ARGS__宏输出字符串常量 2.__VA_ARGS__宏输出可变参数 三.__VA_ARGS__缺点 1.仅仅只支持字符串常量,不支持可变参数 2.仅仅只支持可变参数,不支持字符串常量 四.猜你喜欢 零基础 C/C++ 学习路线推荐 :C/C++ 学习目录>>C 语言基础入门 ...
在C函数中使用__VA_ARGS__而不是宏的方法是通过宏定义来实现。__VA_ARGS__是C语言中的一个特殊宏,用于表示可变参数的占位符。下面是一个示例代码: ```c #include <st...
C语言 函数不定长参数 ##__VA_ARGS__经典案例 - __VA_ARGS__ 在前面的文章也介绍了,有两个缺点: 1.仅仅只支持字符串常量,不支持可变参数 #define LOGFUNC(...) (printf(__VA_ARGS__)) 2.仅仅只支持可变参数,不支持字符串常量 #define LOGSTRINGS(fm, ...) printf(fm
对于第1次调用,__VA_ARGS__展开为1个参数:"Howdy"。 对于第2次调用,__VA_ARGS__展开为3个参数:"Weight = %d, shipping = $%.2f\n"、wt、sp。 因此,展开后的代码是: printf("Howdy"); printf("Weight = %d, shipping = $%.2f\n", wt, sp); 演示用例如下: // variadic.c -- variadic ...
printf(format, ##__VA_ARGS__); \ \ } while(0) int main(int argc, char **argv) { printf("hello world.1 \n"); //DEBUG1("hello world.2\n");//错误 参数为零 DEBUG1("hello world.2 %d %d\n", 1, 2); DEBUG2("hello world.3\n"); ...
二.__VA_ARGS__使用 DATE当前日期,一个以 “MMM DD YYYY” 格式表示的字符串常量。 TIME当前时间,一个以 “HH:MM:SS” 格式表示的字符串常量。 FILE这会包含当前文件名,一个字符串常量。 LINE这会包含当前行号,一个十进制常量。 STDC当编译器以 ANSI 标准编译时,则定义为 1;判断该文件是不是标准 C 程...