Spec-Zone.ru › GCC 11 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-11.4.0/cpp/Diagnostics.html

Spec-Zone.ru

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