Диагностические директивы
Выводит заданное сообщение об ошибке и делает программу некорректной, или выводит заданное предупреждение, не влияя на корректность программы(начиная с C++23).
Синтаксис
#error сообщение-диагностика | (1) | |
#warning сообщение-диагностика | (2) | (начиная с C++23) |
Пояснение
1) При встрече директивы
#error реализация выводит сообщение сообщение-диагностика и делает программу некорректной (компиляция прекращается).
2) То же, что и (1), за исключением того, что корректность программы не затрагивается и компиляция продолжается.
Сообщение-диагностика может состоять из нескольких слов, которые не обязательно заключать в кавычки.
Примечания
До стандартизации в 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:2024):
- 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/cpp/preprocessor/error