Как получить предупреждения неправильной строки, форматирующей (C++)

извинения заранее, если я использую плохую терминологию.

когда я компилирую приложение C++ под gdb и использую printf (), это дает мне, потрясающие предупреждения, касающиеся непротиворечивости строки формата и аргументов, передали в.

например, этот код:

printf("%s %s", "foo");

результаты в предупреждении компилятора "слишком мало аргументов в пользу формата", который суперполезен. это также даст предупреждения о типе строки формата по сравнению с типом аргумента. это, должно быть, осмотрело строку формата и сравнило это с типами переданного аргумента. - этот вид самоанализа времени компиляции что-то, что может быть добавлено к обычному исходному коду или является им что-то, что должно быть скомпилировано в сам gcc?

fwiw это находится под gcc 4.2.1 на OS x.

15
задан ideasman42 20 March 2015 в 04:33
поделиться

1 ответ

Вы можете делать такие вещи для своих собственных функций, подобных printf (а также для функций, подобных scanf / strftime / strfmon):

#define PRINTF_FORMAT_CHECK(format_index, args_index) __attribute__ ((__format__(printf, format_index, args_index)))

void my_printf(const char *fmt, ...) PRINTF_FORMAT_CHECK(1, 2);

Подробнее см. руководство по gcc .

10
ответ дан 1 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: