Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 自定义警告为printf';s";“格式”的参数太多;_C_Gcc - Fatal编程技术网

C 自定义警告为printf';s";“格式”的参数太多;

C 自定义警告为printf';s";“格式”的参数太多;,c,gcc,C,Gcc,有没有一种方法可以告诉gcc根据函数的参数检查函数中的参数号,类似于在使用printf时给您提供“太多格式参数”时所做的操作 例如,我们可以有一个stdarg-using方法,该方法带有一些强制参数,可以提供当前所需参数号的信息,并让gcc告诉我们错误的时间: calculate_mean(4, //Number of arguments 3, 2, 1, 10); //actual parameters calculate_mean(5,

有没有一种方法可以告诉gcc根据函数的参数检查函数中的参数号,类似于在使用printf时给您提供“太多格式参数”时所做的操作

例如,我们可以有一个stdarg-using方法,该方法带有一些强制参数,可以提供当前所需参数号的信息,并让gcc告诉我们错误的时间:

calculate_mean(4, //Number of arguments
               3, 2, 1, 10); //actual parameters

calculate_mean(5,            //Custom warning from gcc because
               1, 5, 10, 2); //there is one missing argument
给予:

# gcc -c file.c -o file.o
gcc: Warning: calculate_mean: Too few arguments (5 required, 4 given)

它可以从代码内部、配置文件中完成,还是在编译器内部硬编码而根本不可能完成?

printf
样式字符串的支持似乎是硬编码到编译器中的。特别是,编译器有一个特殊的功能,可以用来注释
printf
风格的函数。

我对此表示怀疑,但这是一个有趣的问题,也许您可以创建一个。谢谢!我想属性
格式(原型,字符串索引,首先检查)
就是我要找的。不过,我找不到关于参数编号的任何属性。