◐ Shell
clean mode source ↗

Директивы диагностики — cppreference.com

Материал из cppreference.com

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

Синтаксис

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

Объяснение

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

2) То же, что и (1), за исключением того, что корректность программы не затрагивается и компиляция продолжается.

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

Примечание

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

Пример

#if __STDC_HOSTED__ != 1
#  error "Не размещённая реализация"
#endif

#if __cplusplus >= 202302L
#  warning "Используйте #warning в качестве стандартной функции"
#endif

#include <iostream>
int main()
{
    std::cout << "Используемая реализация размещена\n";
}

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

Используемая реализация размещена

Ссылки

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

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