Namespaces
Variants

Diagnostic directives

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous

Zeigt die gegebene Fehlermeldung an und macht das Programm ill-formed , oder zeigt die gegebene Warnmeldung an, ohne die Gültigkeit des Programms zu beeinflussen (since C++23) .

Inhaltsverzeichnis

Syntax

#error Diagnose-Nachricht (1)
#warning Diagnose-Nachricht (2) (seit C++23)

Erklärung

1) Nach dem Auftreten der #error -Direktive gibt eine Implementierung die Meldung diagnostic-message aus und macht das Programm fehlerhaft (die Kompilierung wird abgebrochen).
2) Gleich wie (1) , außer dass die Gültigkeit des Programms nicht beeinträchtigt wird und die Kompilierung fortgesetzt wird.

diagnostic-message kann aus mehreren Wörtern bestehen, die nicht unbedingt in Anführungszeichen stehen müssen.

Hinweise

Vor seiner Standardisierung in C++23, #warning wurde von vielen Compilern in allen Modi als konforme Erweiterung bereitgestellt.

Beispiel

#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";
}

Mögliche Ausgabe:

The implementation used is hosted

Referenzen

  • C++23-Standard (ISO/IEC 14882:2024):
  • 15.8 Fehlerdirektive [cpp.error]
  • C++20 Standard (ISO/IEC 14882:2020):
  • 15.8 Fehlerdirektive [cpp.error]
  • C++17-Standard (ISO/IEC 14882:2017):
  • 19.5 Fehlerdirektive [cpp.error]
  • C++14-Standard (ISO/IEC 14882:2014):
  • 16.5 Fehlerdirektive [cpp.error]
  • C++11-Standard (ISO/IEC 14882:2011):
  • 16.5 Fehlerdirektive [cpp.error]
  • C++03 Standard (ISO/IEC 14882:2003):
  • 16.5 Fehlerdirektive [cpp.error]
  • C++98 Standard (ISO/IEC 14882:1998):
  • 16.5 Fehlerdirektive [cpp.error]

Siehe auch

C-Dokumentation für Diagnose-Direktiven