Spec-Zone.ru › C++

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

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

Синтаксис

#error diagnostic-message (1)
#warning diagnostic-message (2) (с C++23)

Объяснение

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

diagnostic-message может состоять из нескольких слов, необязательно заключенных в кавычки.

Примечания

До стандартизации в 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:2023):
    • 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/w/cpp/preprocessor/error

Spec-Zone.ru

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