基于Linux下的GCC编译器的内部预宏定义与

*****************************************************************************************************************************作者:EasyWave 时间:2015.02.20

类别:Linux应用-GCC编译器的内部预宏定义与__attribute__属性 声明:转载,请保留链接

注意:如有错误,欢迎指正。这些是我学习的日志文章……

*****************************************************************************************************************************

一:Linux下的GCC编译器内部预宏定义

经常在一些开源的程序中看到一些宏定义,却看不到这些宏定义是在哪些地方定义的,其实有些宏定义是交叉编译工具GCC预定义好的,比如:__GNUC__,__ELF__等等,怎么看到这些宏定义呢,可以采用以下命令来查看的,还是现在看看一些程序中的预先宏定义代码吧,如下所示:

怎么来查看到这些预宏定义呢,可以采用gcc -E -dM – </dev/null 命令来查看的如下所示:

root@ubuntu:~$ gcc -E -dM – </dev/null#define __DBL_MIN_EXP__ (-1021)#define __FLT_MIN__ 1.17549435e-38F#define __CHAR_BIT__ 8#define __WCHAR_MAX__ 2147483647#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1#define __DBL_DENORM_MIN__ 4.9406564584124654e-324#define __FLT_EVAL_METHOD__ 2#define __unix__ 1#define __DBL_MIN_10_EXP__ (-307)#define __FINITE_MATH_ONLY__ 0#define __GNUC_PATCHLEVEL__ 3#define __DEC64_MAX_EXP__ 385#define __SHRT_MAX__ 32767#define __LDBL_MAX__ 1.18973149535723176502e+4932L#define __UINTMAX_TYPE__ long long unsigned int#define __linux 1#define __DEC32_EPSILON__ 1E-6DF#define __unix 1#define __LDBL_MAX_EXP__ 16384#define __linux__ 1#define __SCHAR_MAX__ 127#define __DBL_DIG__ 15#define _FORTIFY_SOURCE 2#define __SIZEOF_INT__ 4#define __SIZEOF_POINTER__ 4#define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1#define __LDBL_HAS_INFINITY__ 1#define __FLT_EPSILON__ 1.19209290e-7F#define __LDBL_MIN__ 3.36210314311209350626e-4932L#define __DEC32_MAX__ 9.999999E96DF#define __SIZEOF_LONG__ 4#define __DECIMAL_DIG__ 21#define __gnu_linux__ 1#define __LDBL_HAS_QUIET_NAN__ 1#define __GNUC__ 4#define __FLT_HAS_DENORM__ 1#define __SIZEOF_LONG_DOUBLE__ 12#define __BIGGEST_ALIGNMENT__ 16#define __DBL_MAX__ 1.7976931348623157e+308#define __DBL_HAS_INFINITY__ 1#define __DEC32_MIN_EXP__ (-94)#define __LDBL_HAS_DENORM__ 1#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL#define __DEC32_MIN__ 1E-95DF#define __DBL_MAX_EXP__ 1024#define __DEC128_EPSILON__ 1E-33DL#define __LONG_LONG_MAX__ 9223372036854775807LL#define __SIZEOF_SIZE_T__ 4#define __SIZEOF_WINT_T__ 4#define __GXX_ABI_VERSION 1002#define __FLT_MIN_EXP__ (-125)#define __DBL_MIN__ 2.2250738585072014e-308#define __DECIMAL_BID_FORMAT__ 1#define __DEC128_MIN__ 1E-6143DL#define __REGISTER_PREFIX__ #define __DBL_HAS_DENORM__ 1#define __NO_INLINE__ 1#define __i386 1#define __FLT_MANT_DIG__ 24#define __VERSION__ "4.4.3"#define __DEC64_EPSILON__ 1E-15DD#define __DEC128_MIN_EXP__ (-6142)#define __i486__ 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 __SIZEOF_PTRDIFF_T__ 4#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF#define __FLT_HAS_QUIET_NAN__ 1#define __FLT_MAX_10_EXP__ 38#define __LONG_MAX__ 2147483647L#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL#define __FLT_HAS_INFINITY__ 1#define __DEC64_MAX__ 9.999999999999999E384DD#define __CHAR16_TYPE__ short unsigned int#define __DEC64_MANT_DIG__ 16#define __DEC32_MAX_EXP__ 97#define linux 1#define __LDBL_MANT_DIG__ 64#define __DBL_HAS_QUIET_NAN__ 1#define __WCHAR_TYPE__ int#define __SIZEOF_FLOAT__ 4#define __DEC64_MIN_EXP__ (-382)#define __FLT_DIG__ 6#define __INT_MAX__ 2147483647#define __i486 1#define __FLT_MAX_EXP__ 128#define __DBL_MANT_DIG__ 53#define __DEC64_MIN__ 1E-383DD#define __WINT_TYPE__ unsigned int#define __SIZEOF_SHORT__ 2#define __LDBL_MIN_EXP__ (-16381)#define __SSP__ 1#define __LDBL_MAX_10_EXP__ 4932#define __DBL_EPSILON__ 2.2204460492503131e-16#define __SIZEOF_WCHAR_T__ 4#define __DEC_EVAL_METHOD__ 2#define __INTMAX_MAX__ 9223372036854775807LL#define __FLT_DENORM_MIN__ 1.40129846e-45F#define __CHAR32_TYPE__ unsigned int#define __FLT_MAX__ 3.40282347e+38F#define __SIZEOF_DOUBLE__ 8#define __FLT_MIN_10_EXP__ (-37)#define __INTMAX_TYPE__ long long int#define i386 1#define __DEC128_MAX_EXP__ 6145#define __GNUC_MINOR__ 4#define __DEC32_MANT_DIG__ 7#define __DBL_MAX_10_EXP__ 308#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L#define __STDC__ 1#define __PTRDIFF_TYPE__ int#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD#define __DEC128_MANT_DIG__ 34#define __LDBL_MIN_10_EXP__ (-4931)#define __SIZEOF_LONG_LONG__ 8#define __LDBL_DIG__ 18#define __GNUC_GNU_INLINE__ 1root@ubuntu:~$ 而在嵌入式Linux下的交叉编译GCC中也是可以采用这样的命令来查看的,比如:arm-linux-gcc -E -dM – </dev/null 命令来查看的如下所示:root@ubuntu:~$ arm-linux-gcc -E -dM – </dev/null#define __DBL_MIN_EXP__ (-1021)#define __FLT_MIN__ 1.17549435e-38F#define __DEC64_DEN__ 0.000000000000001E-383DD#define __CHAR_BIT__ 8#define __WCHAR_MAX__ 4294967295U#define __DBL_DENORM_MIN__ 4.9406564584124654e-324#define __FLT_EVAL_METHOD__ 0#define __unix__ 1#define __DBL_MIN_10_EXP__ (-307)#define __FINITE_MATH_ONLY__ 0#define __ARMEL__ 1#define __GNUC_PATCHLEVEL__ 4#define __DEC64_MAX_EXP__ 384#define __SHRT_MAX__ 32767#define __LDBL_MAX__ 1.7976931348623157e+308L#define __GXX_TYPEINFO_EQUALITY_INLINE 0#define __UINTMAX_TYPE__ long long unsigned int#define __linux 1#define __DEC32_EPSILON__ 1E-6DF#define __CHAR_UNSIGNED__ 1#define __LDBL_MAX_EXP__ 1024#define __linux__ 1#define __SCHAR_MAX__ 127#define __DBL_DIG__ 15#define __SIZEOF_INT__ 4#define __SIZEOF_POINTER__ 4#define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1#define __LDBL_HAS_INFINITY__ 1#define __FLT_EPSILON__ 1.19209290e-7F#define __APCS_32__ 1#define __LDBL_MIN__ 2.2250738585072014e-308L#define __DEC32_MAX__ 9.999999E96DF#define __SIZEOF_LONG__ 4#define __DECIMAL_DIG__ 17#define __gnu_linux__ 1#define __LDBL_HAS_QUIET_NAN__ 1#define __GNUC__ 4#define __FLT_HAS_DENORM__ 1#define __SIZEOF_LONG_DOUBLE__ 8#define __ARM_ARCH_5T__ 1#define __DBL_MAX__ 1.7976931348623157e+308#define __DBL_HAS_INFINITY__ 1#define __DEC32_MIN_EXP__ (-95)#define __THUMB_INTERWORK__ 1#define __LDBL_HAS_DENORM__ 1#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL#define __DEC32_MIN__ 1E-95DF#define __DBL_MAX_EXP__ 1024#define __DEC128_EPSILON__ 1E-33DL#define __LONG_LONG_MAX__ 9223372036854775807LL#define __SIZEOF_SIZE_T__ 4#define __SIZEOF_WINT_T__ 4#define __GXX_ABI_VERSION 1002#define __SOFTFP__ 1#define __FLT_MIN_EXP__ (-125)#define __DBL_MIN__ 2.2250738585072014e-308#define __DEC128_MIN__ 1E-6143DL#define __REGISTER_PREFIX__ #define __DBL_HAS_DENORM__ 1#define __NO_INLINE__ 1#define __FLT_MANT_DIG__ 24#define __VERSION__ "4.3.4"#define __DEC64_EPSILON__ 1E-15DD#define __DEC128_MIN_EXP__ (-6143)#define unix 1#define __SIZE_TYPE__ unsigned int#define __DEC32_DEN__ 0.000001E-95DF#define __ELF__ 1#define __FLT_RADIX__ 2#define __LDBL_EPSILON__ 2.2204460492503131e-16L#define __VFP_FP__ 1#define __SIZEOF_PTRDIFF_T__ 4#define __FLT_HAS_QUIET_NAN__ 1#define __FLT_MAX_10_EXP__ 38#define __LONG_MAX__ 2147483647L#define __FLT_HAS_INFINITY__ 1#define __unix 1#define __DEC64_MAX__ 9.999999999999999E384DD#define __DEC64_MANT_DIG__ 16#define __DEC32_MAX_EXP__ 96#define linux 1#define __DEC128_DEN__ 0.000000000000000000000000000000001E-6143DL#define __LDBL_MANT_DIG__ 53#define __DBL_HAS_QUIET_NAN__ 1#define __WCHAR_TYPE__ unsigned int#define __SIZEOF_FLOAT__ 4#define __DEC64_MIN_EXP__ (-383)#define __FLT_DIG__ 6#define __INT_MAX__ 2147483647#define __FLT_MAX_EXP__ 128#define __DBL_MANT_DIG__ 53#define __DEC64_MIN__ 1E-383DD#define __WINT_TYPE__ unsigned int#define __SIZEOF_SHORT__ 2#define __LDBL_MIN_EXP__ (-1021)#define __arm__ 1#define __LDBL_MAX_10_EXP__ 308#define __DBL_EPSILON__ 2.2204460492503131e-16#define __SIZEOF_WCHAR_T__ 4#define __DEC_EVAL_METHOD__ 2#define __INTMAX_MAX__ 9223372036854775807LL#define __FLT_DENORM_MIN__ 1.40129846e-45F#define __FLT_MAX__ 3.40282347e+38F#define __SIZEOF_DOUBLE__ 8#define __FLT_MIN_10_EXP__ (-37)#define __INTMAX_TYPE__ long long int#define __DEC128_MAX_EXP__ 6144#define __GNUC_MINOR__ 3#define __DEC32_MANT_DIG__ 7#define __DBL_MAX_10_EXP__ 308#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L#define __STDC__ 1#define __PTRDIFF_TYPE__ int#define __ARM_EABI__ 1#define __DEC128_MANT_DIG__ 34#define __LDBL_MIN_10_EXP__ (-307)#define __SIZEOF_LONG_LONG__ 8#define __LDBL_DIG__ 15#define __GNUC_GNU_INLINE__ 1二:GCC attribute机制伟人之所以伟大,是因为他与别人共处逆境时,

基于Linux下的GCC编译器的内部预宏定义与

相关文章:

你感兴趣的文章:

标签云: