Spec-Zone.ru › C++

Диагностические директивы

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

Синтаксис

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

Пояснение

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

Сообщение-диагностика может состоять из нескольких слов, которые не обязательно заключать в кавычки.

Примечания

До стандартизации в C++23 директива #warning поддерживалась многими компиляторами во всех режимах как совместимое расширение.

Пример

#if __STDC_HOSTED__ != 1
#   error "Not a hosted implementation"
#endif

#if __cplusplus >= 202302L
#   warning "Using #warning as a standard feature"
#endif

#include <iostream>

int main()
{
    std::cout << "The implementation used is hosted\n";
}

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

The implementation used is hosted

Ссылки

  • Стандарт C++23 (ISO/IEC 14882:2024):
    • 15.8 Директива ошибки [cpp.error]
  • Стандарт C++20 (ISO/IEC 14882:2020):
    • 15.8 Директива ошибки [cpp.error]
  • Стандарт C++17 (ISO/IEC 14882:2017):
    • 19.5 Директива ошибки [cpp.error]
  • Стандарт C++14 (ISO/IEC 14882:2014):
    • 16.5 Директива ошибки [cpp.error]
  • Стандарт C++11 (ISO/IEC 14882:2011):
    • 16.5 Директива ошибки [cpp.error]
  • Стандарт C++03 (ISO/IEC 14882:2003):
    • 16.5 Директива ошибки [cpp.error]
  • Стандарт C++98 (ISO/IEC 14882:1998):
    • 16.5 Директива ошибки [cpp.error]

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/preprocessor/error

Spec-Zone.ru

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