Namensräume
Varianten
Aktionen

Diagnoseanweisungen

Von cppreference.com
 
 
C++ Sprache
Allgemeine Themen
Kontrollfluss
Bedingte Ausführungsaussagen
if
Iterationsanweisungen (Schleifen)
for
Bereichs-for (C++11)
Sprunganweisungen
Funktionen
Funktionsdeklaration
Lambda-Funktionsausdruck
inline-Spezifizierer
Dynamische Ausnahmespezifikationen (bis C++17*)
noexcept-Spezifizierer (C++11)
Ausnahmen
Namensräume
Typen
Spezifizierer
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Speicherdauer-Spezifizierer
Initialisierung
Ausdrücke
Alternative Darstellungen
Literale
Boolesch - Ganzzahl - Gleitkommazahl
Zeichen - String - nullptr (C++11)
Benutzerdefinierte (C++11)
Dienstprogramme
Attribute (C++11)
Typen
typedef-Deklaration
Typalias-Deklaration (C++11)
Umwandlungen
Speicherzuweisung
Klassen
Klassenspezifische Funktionseigenschaften
explicit (C++11)
static

Spezielle Member-Funktionen
Templates
Sonstiges
 
 

Zeigt die angegebene Fehlermeldung an und macht das Programm fehlerhaft, oder zeigt die angegebene Warnmeldung an, ohne die Gültigkeit des Programms zu beeinträchtigen(seit C++23).

Inhalt

[bearbeiten] Syntax

#error diagnose-nachricht (1)
#warning diagnose-nachricht (2) (seit C++23)

[bearbeiten] Erklärung

1) Nach dem Auftreten der #error-Anweisung zeigt eine Implementierung die Nachricht diagnose-nachricht an und macht das Programm fehlerhaft (die Kompilierung wird beendet).
2) Wie unter (1) beschrieben, außer dass die Gültigkeit des Programms nicht beeinträchtigt wird und die Kompilierung fortgesetzt wird.

diagnose-nachricht kann aus mehreren Wörtern bestehen, die nicht notwendigerweise in Anführungszeichen stehen.

[bearbeiten] Anmerkungen

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

[bearbeiten] 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

[bearbeiten] Referenzen

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

[bearbeiten] Siehe auch

C-Dokumentation für Diagnoseanweisungen