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

cpp/preprocessor/error — различия между версиями

Материал из cppreference.com
Строка 1: Строка 1:
{{title|Директива error}}
+
{{title|}}
 
{{cpp/preprocessor/navbar}}
 
{{cpp/preprocessor/navbar}}
Показывает указанное сообщение об ошибке и делает программу некорректной.
 
  
===Синтаксис===
+
=
  
 +
 
{{sdsc begin}}
 
{{sdsc begin}}
{{sdsc | {{ttb|#error}} {{spar|сообщение_об_ошибке}} }}
+
{{sdsc | {{ttb|#error}} {{spar|
 +
}} }}
 
{{sdsc end}}
 
{{sdsc end}}
  
 
===Объяснение===
 
===Объяснение===
 +
  
После обнаружения директивы {{tt|#error}}, реализация отображает диагностическое сообщение {{spar|сообщение_об_ошибке}} и делает программу некорректной (компиляция останавливается).
+
{{|}}, и компиляция .
  
''сообщение_об_ошибке'' может состоять из нескольких слов, необязательно в кавычках.
+
может состоять из нескольких слов, в кавычках
 +
 
 +
 +
.
  
 
===Пример===
 
===Пример===
Строка 20: Строка 25:
 
#if __STDC_HOSTED__ != 1
 
#if __STDC_HOSTED__ != 1
 
#  error "Не размещённая реализация"
 
#  error "Не размещённая реализация"
 +
 +
 +
 +
 
#endif
 
#endif
  
Строка 33: Строка 42:
  
 
===Ссылки===
 
===Ссылки===
 
+
{{ref std c++98}}
+
 +
 +
 +
 +
 +
{{ref std c++}}
 
{{ref std | section=16.5 | title=Директива error | id=cpp.error}}
 
{{ref std | section=16.5 | title=Директива error | id=cpp.error}}
 
{{ref std end}}
 
{{ref std end}}
Строка 40: Строка 54:
 
{{ref std | section=16.5 | title=Директива error | id=cpp.error}}
 
{{ref std | section=16.5 | title=Директива error | id=cpp.error}}
 
{{ref std end}}
 
{{ref std end}}
{{ref std c++14}}
+
{{ref std c++}}
 
{{ref std | section=16.5 | title=Директива error | id=cpp.error}}
 
{{ref std | section=16.5 | title=Директива error | id=cpp.error}}
 
{{ref std end}}
 
{{ref std end}}
{{ref std c++17}}
+
{{ref std c++}}
{{ref std | section=19.5 | title=Директива error | id=cpp.error}}
+
{{ref std | section=.5 | title=Директива error | id=cpp.error}}
{{ref std end}}
+
{{ref std c++20}}
+
{{ref std | section=15.8 | title=Директива error | id=cpp.error}}
+
 
{{ref std end}}
 
{{ref std end}}
  
 
===Смотрите также===
 
===Смотрите также===
 
{{dsc begin}}
 
{{dsc begin}}
{{dsc see c | c/preprocessor/error | Директива {{tt|error}} | nomono=true}}
+
{{dsc see c | c/preprocessor/error | | nomono=true}}
 
{{dsc end}}
 
{{dsc end}}
  
 
{{langlinks|ar|cs|de|en|es|fr|it|ja|pl|pt|zh}}
 
{{langlinks|ar|cs|de|en|es|fr|it|ja|pl|pt|zh}}

Версия 02:18, 18 июля 2022

 
 
Язык С++
Общие темы
Управление потоком
Операторы условного выполнения
if
Операторы итерации (циклы)
Операторы перехода
Функции
Объявление функции
Выражение лямбда-функции
Спецификатор 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
Выделение памяти
Классы
Свойства функции класса
explicit (C++11)
static
Специальные функции-элементы
Шаблоны
Разное
 
 

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

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

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

Ссылки

  • 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 по Директивы диагностики