Кодовая база, с которой я работаю, исторически пыталась - целенаправленно - избегать появления зависимости от stdio.h. Она имеет собственное форматирование и механизмы печати, и это то, что предполагается использовать вместо printf и т. Д.
Но кто-то время от времени добавляет зависимость, которую нужно заметить и устранить. Поэтому я постарался сделать будильник для самых простых случаев:
#if !defined(NDEBUG)
void printf(float dont_link_with_stdio_h);
#endif
Похоже, что люди из gcc тоже думали о том, чтобы остановить простые ошибки, потому что есть полезное сообщение, если вы сделаете это ... независимо от того, включили ли вы <stdio.h>
или нет.
конфликтующие типы для встроенной функции printf
Есть способ отключить это предупреждение (-fno-builtin
). И есть всевозможные подходы, которые могут делать такие вещи, как фильтрация дампа символов для вещей, которые вы не хотите там видеть ...
Но есть ли тривиально простой способ, не вызывающий предупреждений (если вы не включили stdio.h), чтобы предупредить кого-то о том, что они ввели нежелательное использование printf?
#define printf dont_include_stdio_h
(или#define printf _Static_assert(0, "Do not include stdio.h")
)? - person Cornstalks   schedule 30.12.2015