.TH "__STDC__" "" "" "Manifest Constant"
.II "translator, mark conforming"
.II "conforming translator, mark"
.II "mark a conforming translator"
.PC "Mark a conforming translator"
.PP
.B "__STDC__"
is a preprocessor constant that is defined by the C preprocessor.
If it is defined to be equal to one, then it
indicates that the translator conforms to the ANSI standard.
.PP
The value of
.B "__STDC__"
remains constant throughout the entire program, no matter how many source files
it comprises.
It may not be the subject of a
.B #define
or
.B #undef
preprocessing directive.
.SH Example
For an example of using
.B "__STDC__"
in a program, see
.BR "__DATE__" .
.SH "See Also"
.Xr "__DATE__," _5F5Fdate
.Xr "__FILE__," _5F5Ffile
.Xr "__LINE__," _5F5Fline
.Xr "__TIME__," _5F5Ftime
.Xr "manifest constant" manifestc
.br
\*(AS, \(sc6.8.8
.SH Notes
Many users incorrectly attempt to use the construction
.DM
	#ifdef __STDC__
.DE
.PP
instead of the correct form:
.DM
	#if __STDC__
.DE
.PP
These constructions give different results because
.B __STDC__
is defined, but it is defined to a value of zero, in keeping with the fact that
\*(CO C does not yet conform to the ANSI standard.
.PP
To help users avoid this error, \*(CO
does not define
.B __STDC__
at all.
