Настраиваемое предупреждение как «слишком много аргументов для формата» в printf - PullRequest
4 голосов
/ 16 февраля 2012

Есть ли способ заставить gcc проверять номер аргумента в функции на основе ее параметров, аналогично тому, что он делает, давая вам "слишком много аргументов для формата" при использовании printf?

Например, можем ли мы использовать метод, использующий stdarg, с некоторым обязательным аргументом, который бы сообщал информацию о требуемом в настоящее время номере аргумента и 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)

Может ли это быть сделано внутри кода, из файла конфигурации, или это жестко закодировано внутри компилятора и вообще невозможно?

1 Ответ

1 голос
/ 16 февраля 2012

Кажется, что поддержка строк в стиле printf жестко запрограммирована в компиляторе. В частности, компилятор имеет специальный атрибут функции format , который можно использовать для аннотирования функций стиля printf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...