Kodama's home / tips.
$ echo | gcc -v -E -dM - ....results
Example:
$ gcc -v -E -dM sample.c Reading specs from /usr/lib/gcc-lib/i386-pc-linux/2.95.3/specs gcc version 2.95.3 20010315 (release) /usr/lib/gcc-lib/i386-pc-linux/2.95.3/cpp0 -lang-c -v -D__GNUC__=2 -D__GNUC_MINOR__=95 -D__ELF__ .....snip..... #define __FD_SETSIZE 1024 #define __flexarr [0] #define _IO_IS_APPENDING 0x1000Or "echo | gcc -v -E -dM -" for default defs.
$ echo | gcc -v -E -dM - Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/specs Configured with: ./configure --with-gnu-as --with-gnu-ld --prefix=/usr Thread model: posix gcc version 3.4.1 /usr/libexec/gcc/i686-pc-linux-gnu/3.4.1/cc1 -E -quiet -v - -mtune=pentiumpro -dM ignoring nonexistent directory "/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include /usr/include End of search list. #define __DBL_MIN_EXP__ (-1021) #define __FLT_MIN__ 1.17549435e-38F #define __CHAR_BIT__ 8 #define __WCHAR_MAX__ 2147483647 #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 #define __FLT_EVAL_METHOD__ 2 #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __linux 1 #define __unix 1 #define __LDBL_MAX_EXP__ 16384 #define __linux__ 1 #define __SCHAR_MAX__ 127 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __DBL_DIG__ 15 #define __FLT_EPSILON__ 1.19209290e-7F #define __tune_i686__ 1 #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __unix__ 1 #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 3 #define __DBL_MAX__ 1.7976931348623157e+308 #define __DBL_HAS_INFINITY__ 1 #define __DBL_MAX_EXP__ 1024 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __DBL_MIN__ 2.2250738585072014e-308 #define __DBL_HAS_QUIET_NAN__ 1 #define __REGISTER_PREFIX__ #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "3.4.1" #define i386 1 #define unix 1 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 2147483647L #define __FLT_HAS_INFINITY__ 1 #define linux 1 #define __LDBL_MANT_DIG__ 64 #define __WCHAR_TYPE__ long int #define __FLT_DIG__ 6 #define __INT_MAX__ 2147483647 #define __FLT_MAX_EXP__ 128 #define __DBL_MANT_DIG__ 53 #define __WINT_TYPE__ unsigned int #define __LDBL_MIN_EXP__ (-16381) #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ 2.2204460492503131e-16 #define __tune_pentiumpro__ 1 #define __FLT_DENORM_MIN__ 1.40129846e-45F #define __FLT_MAX__ 3.40282347e+38F #define __FLT_MIN_10_EXP__ (-37) #define __GNUC_MINOR__ 4 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __PTRDIFF_TYPE__ int #define __LDBL_MIN_10_EXP__ (-4931) #define __LDBL_DIG__ 18
$ echo | gcc -v -E -dM - Reading specs from /usr/lib/gcc-lib/i386-pc-linux/2.95.3/specs gcc version 2.95.3 20010315 (release) /usr/lib/gcc-lib/i386-pc-linux/2.95.3/cpp0 -lang-c -v -D__GNUC__=2 -D__GNUC_MINOR__=95 -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -dM -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ - GNU CPP version 2.95.3 20010315 (release) (i386 Linux/ELF) #include "..." search starts here: #include <...> search starts here: /usr/include /usr/lib/gcc-lib/i386-pc-linux/2.95.3/../../../../i386-pc-linux/include /usr/lib/gcc-lib/i386-pc-linux/2.95.3/include /usr/include End of search list. The following default directories have been omitted from the search path: /usr/lib/gcc-lib/i386-pc-linux/2.95.3/../../../../include/g++-3 End of omitted list. #define __linux__ 1 #define linux 1 #define __i386__ 1 #define __i386 1 #define __GNUC_MINOR__ 95 #define i386 1 #define __unix 1 #define __unix__ 1 #define __GNUC__ 2 #define __linux 1 #define __ELF__ 1 #define unix 1(K.Kodama 2004)
$ echo | gcc -v -E -dM - Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/specs Configured with: /GCC/gcc-3.3.1-3/configure --with-gcc --with-gnu-ld --with-gnu-as --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/sbin --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,f77,pascal,java,objc --enable-libgcj --enable-threads=posix --with-system-zlib --enable-nls --without-included-gettext --enable-interpreter --enable-sjlj-exceptions --disable-version-specific-runtime-libs --enable-shared --disable-win32-registry --enable-java-gc=boehm --disable-hash-synchronization --verbose --target=i686-pc-cygwin --host=i686-pc-cygwin --build=i686-pc-cygwinThread model: posix gcc version 3.3.1 (cygming special) /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/cc1.exe -E -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=1 -D__CYGWIN32__ -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/../../../../include/w32api -idirafter /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/../../../../i686-pc-cygwin/lib/../../include/w32api - -dM ignoring nonexistent directory "/usr/i686-pc-cygwin/include" ignoring duplicate directory "/usr/i686-pc-cygwin/lib/../../include/w32api" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/include /usr/include /usr/include/w32api End of search list. #define __DBL_MIN_EXP__ (-1021) #define __FLT_MIN__ 1.17549435e-38F #define _X86_ 1 #define __CHAR_BIT__ 8 #define __WCHAR_MAX__ 65535U #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define unix 1 #define __i386__ 1 #define __SIZE_TYPE__ unsigned int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 1 #define __FLT_RADIX__ 2 #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define _stdcall __attribute__((__stdcall__)) #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __CYGWIN__ 1 #define __unix 1 #define __LDBL_MAX_EXP__ 16384 #define __LONG_MAX__ 2147483647L #define __SCHAR_MAX__ 127 #define __DBL_DIG__ 15 #define __USER_LABEL_PREFIX__ _ #define __STDC_HOSTED__ 1 #define __stdcall __attribute__((__stdcall__)) #define __LDBL_MANT_DIG__ 64 #define __FLT_EPSILON__ 1.19209290e-7F #define __tune_i686__ 1 #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __WCHAR_TYPE__ short unsigned int #define __FLT_DIG__ 6 #define __FLT_MAX_10_EXP__ 38 #define __INT_MAX__ 2147483647 #define __FLT_MAX_EXP__ 128 #define __DECIMAL_DIG__ 21 #define __DBL_MANT_DIG__ 53 #define __WINT_TYPE__ unsigned int #define __GNUC__ 3 #define _cdecl __attribute__((__cdecl__)) #define __LDBL_MIN_EXP__ (-16381) #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ 2.2204460492503131e-16 #define __DBL_MAX__ 1.7976931348623157e+308 #define __tune_pentiumpro__ 1 #define __fastcall __attribute__((__fastcall__)) #define _fastcall __attribute__((__fastcall__)) #define __CYGWIN32__ 1 #define __USING_SJLJ_EXCEPTIONS__ 1 #define __DBL_MAX_EXP__ 1024 #define __FLT_DENORM_MIN__ 1.40129846e-45F #define __LONG_LONG_MAX__ 9223372036854775807LL #define __FLT_MAX__ 3.40282347e+38F #define __GXX_ABI_VERSION 102 #define __FLT_MIN_10_EXP__ (-37) #define __FLT_MIN_EXP__ (-125) #define i386 1 #define __GNUC_MINOR__ 3 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __DBL_MIN__ 2.2250738585072014e-308 #define __PTRDIFF_TYPE__ int #define __LDBL_MIN_10_EXP__ (-4931) #define __REGISTER_PREFIX__ #define __cdecl __attribute__((__cdecl__)) #define __LDBL_DIG__ 18 #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "3.3.1 (cygming special)" #define __declspec(x) __attribute__((x))(report by Toshio Sumi 2004)
[Macintosh:~/work] admin% echo | gcc -v -E -dM - Reading specs from /usr/libexec/gcc/darwin/ppc/3.1/specs Thread model: posix Apple Computer, Inc. GCC version 1175, based on gcc version 3.1 20020420 (prerelease) /usr/libexec/gcc/darwin/ppc/3.1/cpp0 -lang-c -v -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -D__APPLE_CC__=1175 -D__ppc__ -D__POWERPC__ -D__NATURAL_ALIGNMENT__ -D__MACH__ -D__BIG_ENDIAN__ -D__APPLE__ -D__ppc__ -D__POWERPC__ -D__NATURAL_ALIGNMENT__ -D__MACH__ -D__BIG_ENDIAN__ -D__APPLE__ -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D__DYNAMIC__ - -dM GNU CPP version 3.1 20020420 (prerelease) (cpplib) (Darwin/PowerPC) ignoring nonexistent directory "/usr/lib/gcc-lib/ppc-darwin/3.1/../../../../ppc-darwin/include" ignoring nonexistent directory "/Local/Library/Frameworks" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/include/gcc/darwin/3.1 /usr/include End of search list. Framework search starts here: /System/Library/Frameworks /Library/Frameworks End of framework search list. #define __BIG_ENDIAN__ 1 #define __HAVE_BUILTIN_SETJMP__ 1 #define __SIZE_TYPE__ long unsigned int #define __GNUC_PATCHLEVEL__ 0 #define __NATURAL_ALIGNMENT__ 1 #define __APPLE_CC__ 1175 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __DYNAMIC__ 1 #define __WCHAR_TYPE__ int #define __ppc__ 1 #define __APPLE__ 1 #define __MACH__ 1 #define __WINT_TYPE__ unsigned int #define __GNUC__ 3 #define __GNUC_MINOR__ 1 #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __REGISTER_PREFIX__ #define __POWERPC__ 1 #define __NO_INLINE__ 1 #define __VERSION__ "3.1 20020420 (prerelease)"(report by Toshio Sumi 2004)
Followings are Japanese explanations.
C のマクロを表示する方法と, いくつかの OS についての判別法をまとめました. 可搬性のある C のコードを書こうとするのは困難です. このページは, 最低限のコンパイル環境/動作環境の判別に使える事を目指しています.OS の問題もありますが, GCC の版によるちがいが意外に大きいようですね.
Kodama's home / tips.