Пространства имён
Варианты
Действия

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

Материал из cppreference.com
 
 
Язык С++
Общие темы
Управление потоком
Операторы условного выполнения
Операторы итерации (циклы)
Операторы перехода
Функции
Объявление функции
Выражение лямбда-функции
Спецификатор inline
Спецификации динамических исключений(до C++17*)
Спецификатор noexcept(C++11)
Исключения
Пространства имён
Типы
Спецификаторы
decltype(C++11)
auto(C++11)
alignas(C++11)
Спецификаторы длительности хранения
Инициализация
Выражения
Альтернативные представления
Литералы
Логические - Целочисленные - С плавающей запятой
Символьные - Строковые - nullptr(C++11)
Определяемые пользователем(C++11)
Утилиты
Атрибуты(C++11)
Types
Объявление typedef
Объявление псевдонима типа(C++11)
Casts
Неявные преобразования - Явные преобразования
static_cast - dynamic_cast
const_cast - reinterpret_cast
Выделение памяти
Классы
Свойства функции класса
Специальные функции-элементы
Шаблоны
Разное
 
 

Показывает данное сообщение об ошибке и делает программу некорректной или отображает заданное предупреждающее сообщение, не влияющее на правильность программы(начиная с 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]

[править]Смотрите также

Документация C по Директивы диагностики
close