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

Muestra el mensaje de error dado y hace que el programa sea incorrecto , o muestra el mensaje de advertencia dado sin afectar la validez del programa (desde C++23) .

Contenidos

Sintaxis

#error mensaje-de-diagnóstico (1)
#warning mensaje-de-diagnóstico (2) (desde C++23)

Explicación

1) Después de encontrar la directiva #error , una implementación muestra el mensaje diagnostic-message y hace que el programa sea incorrecto (la compilación se detiene).
2) Igual que (1) , excepto que la validez del programa no se ve afectada y la compilación continúa.

diagnostic-message puede consistir en varias palabras no necesariamente entre comillas.

Notas

Antes de su estandarización en C++23, #warning ha sido proporcionado por muchos compiladores en todos los modos como una extensión conforme.

Ejemplo

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

Salida posible:

The implementation used is hosted

Referencias

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

Véase también

Documentación de C para Directivas de diagnóstico