可以使用如下的命令:
gcc -dM -E - < /dev/null
这个命令的解释如下:
-dCHARS
CHARS is a sequence of one or more of the following characters, and
must not be preceded by a space. Other characters are interpreted
by the compiler proper, or reserved for future versions of GCC, and
so are silently ignored. If you specify characters whose behavior
conflicts, the result is undefined.
M Instead of the normal output, generate a list of #define
directives for all the macros defined during the execution of
the preprocessor, including predefined macros. This gives you
a way of finding out what is predefined in your version of the
preprocessor. Assuming you have no file foo.h, the command
touch foo.h; cpp -dM foo.h
will show all the predefined macros.
If you use -dM without the -E option, -dM is interpreted as a
synonym for -fdump-rtl-mach.
-E Stop after the preprocessing stage; do not run the compiler proper. The output is in the form of
preprocessed source code, which is sent to the standard output.
Input files that don't require preprocessing are ignored.
后面的 "-"表示标准输入.
在我的电脑上,相关的输出是:
#define __STDC_VERSION__ 201112L
这表示C的版本是2011版本(C11).