[cpp.error]

# 15 Preprocessing directives [[cpp]](./#cpp)

## 15.9 Diagnostic directives [cpp.error]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/preprocessor.tex#L2126)

A preprocessing directive of the form

# error [*pp-tokens*](cpp.pre#nt:pp-tokens "15.1 Preamble [cpp.pre]")opt [*new-line*](cpp.pre#nt:new-line "15.1 Preamble [cpp.pre]")

renders the program ill-formed[.](#1.sentence-1)

A preprocessing directive of the form

# warning [*pp-tokens*](cpp.pre#nt:pp-tokens "15.1 Preamble [cpp.pre]")opt [*new-line*](cpp.pre#nt:new-line "15.1 Preamble [cpp.pre]")

requires the implementation to produce at least one diagnostic message
for the preprocessing translation unit ([[intro.compliance.general]](intro.compliance.general "4.1.1 General"))[.](#1.sentence-2)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/preprocessor.tex#L2139)

*Recommended practice*: Any diagnostic message caused by either of these directives
should include the specified sequence of preprocessing tokens[.](#2.sentence-1)
