Я бы хотел сделать что-нибудь вроде
#print "C Preprocessor got here!"
в целях отладки. Какой лучший / самый портативный способ сделать это?
printing
c-preprocessor
Эндрю Вагнер
источник
источник
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"
... Мне придется попробовать, но инстинкт подсказывает мне, что ответ отрицательный.#define WARNING(msg) _Pragma("message " #msg)
Следующее поддерживается MSVC и GCC .
Clang недавно начал добавлять поддержку, подробнее см. Здесь .
источник
Вы можете попробовать:
#pragma message("Hello World!")
источник
Большинство компиляторов C распознают
#warning
директиву, поэтомуТакже есть стандартная директива #error,
Хотя все компиляторы поддерживают это, он также остановит компиляцию / предварительную обработку.
источник
прекрасно работает. Также не остановит компиляцию, даже если вы используете -Werror
источник
Другое решение - использовать комментарии и сценарий оболочки для их обработки. Это требует некоторой дисциплины (или сценария оболочки, который обнаруживает опечатки).
Например, я добавляю отформатированные комментарии,
//TODO
а затем скрипт оболочки, который собирает их все в отчет.Для более сложных случаев использования вы можете попробовать написать собственный простой препроцессор. Например, вы можете редактировать свои источники как
*.c2
файлы. Простой препроцессор будет читать исходный код, искать//TODO
и записыватьprintf("TODO ...")
в выходной*.c
файл.источник
Вы не можете. Препроцессоры обрабатываются до кода C. Нет никаких директив препроцессора для вывода на экран, поскольку код препроцессора не выполняется, он используется для генерации кода C, который будет скомпилирован в исполняемый код.
Что-то не так с:
Потому что это все, что вы можете сделать с препроцессорами.
источник