Spec-Zone.ru › GCC 9 CPP

5 Диагностика

Директива ‘#error’ заставляет препроцессор сообщить об ошибке. Токены, составляющие остальную часть строки после ‘#error’, используются в качестве сообщения об ошибке.

Вы бы использовали ‘#error’ внутри условного оператора, который обнаруживает комбинацию параметров, которые, как вы знаете, программа не поддерживает должным образом. Например, если вы знаете, что программа не будет работать должным образом на VAX, вы можете написать

#ifdef __vax__
#error "Won't work on VAXen.  See comments at get_last_object."
#endif

Если у вас есть несколько параметров конфигурации, которые должны быть настроены установкой согласованным образом, вы можете использовать условные операторы для обнаружения несоответствия и сообщений об этом с помощью ‘#error’. Например,

#if !defined(FOO) && defined(BAR)
#error "BAR requires FOO."
#endif

Директива ‘#warning’ похожа на ‘#error’, но заставляет препроцессор выдать предупреждение и продолжить предварительную обработку. Токены, следующие за ‘#warning’, используются в качестве сообщения о предупреждении.

Вы можете использовать ‘#warning’ в устаревших заголовочных файлах, с сообщением, направляющим пользователя к заголовочному файлу, который следует использовать вместо него.

Ни ‘#error’, ни ‘#warning’ не выполняют макроподстановку своего аргумента. Последовательности внутренних пробелов заменяются одним пробелом. Строка должна состоять из полных токенов. Лучше всего сделать аргумент этих директив единственной строковой константой; это предотвращает проблемы с апострофами и т. п.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/cpp/Diagnostics.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API