我正在使用特定于ARM微处理器的GCC变体,我试图弄清楚这个宏在stdint.h中做了什么。
#if defined(__GNUC__) && \
( (__GNUC__ >= 4) || \
( (__GNUC__ >= 3) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2) ) )
/* gcc > 3.2 implicitly defines the values we are interested */
#define __STDINT_EXP(x) __##x##__
#else
#define __STDINT_EXP(x) x
#include <limits.h>
#endif
__GNUC__
是一个特定于实现的宏,但是你怎么知道编译器正在使用什么呢? Printf()
不适用于此编译器,因为它的输出是针对嵌入式系统的。
答案 0 :(得分:3)
使用#pragma message "__GNUC__=" __GNUC__
在编译时输出它。
http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html
答案 1 :(得分:3)
要单独扩展,只需
echo __GNUC__ | cc -E -
要展开包含该文件的文件,cc -E
filename
答案 2 :(得分:2)
gcc的选项-dM
会吐出内部定义的所有宏。像
gcc -xc -dM -E /dev/null | sort | less
应该这样做。