Namespaces
Variants

Diagnostic directives

From cppreference.net

Показывает заданное сообщение об ошибке и делает программу некорректной , или заданное предупреждающее сообщение без влияния на валидность программы (начиная с C23) .

Содержание

Синтаксис

#error диагностическое-сообщение (1)
#warning диагностическое-сообщение (2) (начиная с C23)

Объяснение

1) После встречи директивы #error реализация выводит сообщение diagnostic-message и делает программу некорректной (компиляция прекращается).
2) То же, что и (1) , за исключением того, что валидность программы не нарушается и компиляция продолжается.

diagnostic-message может состоять из нескольких слов, не обязательно заключенных в кавычки.

Примечания

До стандартизации в C23, #warning предоставлялся многими компиляторами во всех режимах как соответствующее расширение.

Пример

#if __STDC__ != 1
#  error "Not a standard compliant compiler"
#endif
#if __STDC_VERSION__ >= 202311L
#  warning "Using #warning as a standard feature"
#endif
#include <stdio.h>
int main (void)
{
    printf("The compiler used conforms to the ISO C Standard !!");
}

Возможный вывод:

The compiler used conforms to the ISO C Standard !!

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 6.10.5 Директива error (стр: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 6.10.5 Директива ошибки (стр: 126-127)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 6.10.5 Директива error (стр: 174)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 6.10.5 Директива ошибки (стр: 159)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
  • 3.8.5 Директива ошибки

Смотрите также

Документация C++ для Директив диагностики