当前位置: 技术问答>linux和unix
关于GCC警告的问题
来源: 互联网 发布时间:2016-10-18
本文导语: [gsm@fedora ~]$ cat -n b.c 1 #include 2 #include 3 4 #define _(str) (str) 5 #define report_error(format, ...) 6 do 7 { 8 fprintf(stderr, _("文件:%s 函...
[gsm@fedora ~]$ cat -n b.c
1 #include
2 #include
3
4 #define _(str) (str)
5 #define report_error(format, ...)
6 do
7 {
8 fprintf(stderr, _("文件:%s 函數:%s 行號:%d 錯誤:"),
9 __FILE__, __func__, __LINE__);
10 fprintf(stderr, format, ##__VA_ARGS__);
11 fprintf(stderr, "n");
12 }while(0)
13
14 int main(void)
15 {
16 report_error("test");
17 return 0;
18 }
[gsm@fedora ~]$ gcc -std=c99 -pedantic-errors -Wall b.c
b.c: In function 「main」:
b.c:16:24: 錯誤:ISO C99 需要使用剩餘的引數
如何修改代码(别告诉我修改编译参数。。。)以消除警告?
1 #include
2 #include
3
4 #define _(str) (str)
5 #define report_error(format, ...)
6 do
7 {
8 fprintf(stderr, _("文件:%s 函數:%s 行號:%d 錯誤:"),
9 __FILE__, __func__, __LINE__);
10 fprintf(stderr, format, ##__VA_ARGS__);
11 fprintf(stderr, "n");
12 }while(0)
13
14 int main(void)
15 {
16 report_error("test");
17 return 0;
18 }
[gsm@fedora ~]$ gcc -std=c99 -pedantic-errors -Wall b.c
b.c: In function 「main」:
b.c:16:24: 錯誤:ISO C99 需要使用剩餘的引數
如何修改代码(别告诉我修改编译参数。。。)以消除警告?
|
定义成(format,...),意味着至少两个参数,而你只给了1个,所以报错了
|
因为是宏定义,函数定义就可以你那样写也能支持1个参数
|
5 #define report_error(...)
10 fprintf(stderr, ##__VA_ARGS__);
用楼主的编译命令行,通过。gcc 4.3.2
report_error("test");
report_error("test %d %s", 1, "abc");
都可以输出
10 fprintf(stderr, ##__VA_ARGS__);
用楼主的编译命令行,通过。gcc 4.3.2
report_error("test");
report_error("test %d %s", 1, "abc");
都可以输出
|