Diagnostic directives - cppreference.com (original) (raw)

Shows the given error message and renders the program ill-formed, or shows the given warning message without affecting the validity of the program(since C++23).

[edit] Syntax

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

[edit] Explanation

  1. After encountering the #error directive, an implementation displays the message diagnostic-message and renders the program ill-formed (the compilation stops).

  2. Same as (1), except the validity of the program is not affected and the compilation continues.

diagnostic-message can consist of several words not necessarily in quotes.

[edit] Notes

Before its standardization in C++23, #warning has been provided by many compilers in all modes as a conforming extension.

[edit] Example

#if STDC_HOSTED != 1

error "Not a hosted implementation"

#endif   #if __cplusplus >= 202302L

warning "Using #warning as a standard feature"

#endif   #include   int main() { std::cout << "The implementation used is hosted\n"; }

Possible output:

The implementation used is hosted

[edit] References

[edit] See also