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

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

Материал из cppreference.com
(Translated from the English version using Google Translate)
 
м
 
(не показаны 10 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{tr_note}}
+
{{title|}}
{{title|Error directive}}
+
 
{{cpp/preprocessor/navbar}}
 
{{cpp/preprocessor/navbar}}
{{tr|Показывает данное сообщение и оказывает программа плохо сформированных.|Shows given message and renders program ill-formed.}}
+
 
 +
Показывает данное сообщение и |}}
  
 
===Синтаксис===
 
===Синтаксис===
{{sdcl list begin}}
+
{{begin}}
{{sdcl list item | {{ttb|#error}} {{sparam|error_message}} }}
+
{{| {{ttb|#error}} {{
{{sdcl list end}}
+
|}} }}
 +
{{end}}
  
 
===Объяснение===
 
===Объяснение===
{{tr|После столкновения {{tt|#error}} директиву, диагностические {{sparam|error_message}} будет показано сообщение и программа оказывается плохо сформированных (компиляция останавливается). |After encountering {{tt|#error}} directive, diagnostic message {{sparam|error_message}} is shown and the program is rendered ill-formed (the compilation is stopped). }}
+
После {{|#error}} {{|}} и (компиляция останавливается).
 +
 
 +
|
 +
 
 +
{{|}} ,
 +
 
 +
 +
{{|}}
 +
 
 +
 +
 +
 +
 +
 +
 +
 
 +
 +
 +
 +
 
 +
 +
()
 +
 +
 +
 +
 +
 +
 +
}}
  
{{tr|'''' Error_message может состоять из нескольких слов, не обязательно в кавычках. |''error_message'' can consist of several words not necessarily in quotes. }}
+
 +
{{
 +
| .| .
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
}}
  
===См. также===
+
===также===
* {{rlp | warning |{{tr| Предупреждение директивы| warning directive}}}}
+
{{
 +
{{| | }}
 +
}}
  
[[ar:cpp/preprocessor/error]]
+
arcsdefritjaplptzh
[[cs:cpp/preprocessor/error]]
+
[[de:cpp/preprocessor/error]]
+
[[fr:cpp/preprocessor/error]]
+
[[it:cpp/preprocessor/error]]
+
[[ja:cpp/preprocessor/error]]
+
[[pl:cpp/preprocessor/error]]
+
[[pt:cpp/preprocessor/error]]
+
[[zh:cpp/preprocessor/error]]
+

Текущая версия на 21:52, 9 июля 2023

 
 
Язык С++
Общие темы
Управление потоком
Операторы условного выполнения
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 << "Используемая реализация размещена\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 по Директивы диагностики