-
Android ndk开发时查看编译器预定义宏
2018-01-30 15:19:02Android ndk开发时查看编译器预定义宏 准备好c文件,命名为test.c,内容如下: int main(void) {} 找到ndk安装目录下的arm-linux-androideabi-gcc.exe,并切换到此目录下,如我的路径为: D:\Android\sdk\ndk-...Android ndk开发时查看编译器预定义宏
- 准备好c文件,命名为test.c,内容如下:
int main(void) {}
- 找到ndk安装目录下的arm-linux-androideabi-gcc.exe,并切换到此目录下,如我的路径为:
D:\Android\sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gcc.exe
- 执行命令:arm-linux-androideabi-gcc.exe -dM -E C:\Users\huweijian\Desktop\test.c
- 获得如下内容:
#define __DBL_MIN_EXP__ (-1021) #define __HQ_FBIT__ 15 #define __UINT_LEAST16_MAX__ 65535 #define __ARM_SIZEOF_WCHAR_T 4 #define __ATOMIC_ACQUIRE 2 #define __SFRACT_IBIT__ 0 #define __FLT_MIN__ 1.1754943508222875e-38F #define __GCC_IEC_559_COMPLEX 0 #define __UFRACT_MAX__ 0XFFFFP-16UR #define __UINT_LEAST8_TYPE__ unsigned char #define __DQ_FBIT__ 63 #define __INTMAX_C(c) c ## LL #define __ULFRACT_FBIT__ 32 #define __SACCUM_EPSILON__ 0x1P-7HK #define __CHAR_BIT__ 8 #define __USQ_IBIT__ 0 #define __UINT8_MAX__ 255 #define __ACCUM_FBIT__ 15 #define __ANDROID__ 1 #define __WINT_MAX__ 4294967295U #define __USFRACT_FBIT__ 8 #define __ORDER_LITTLE_ENDIAN__ 1234 #define __SIZE_MAX__ 4294967295U #define __ARM_ARCH_ISA_ARM 1 #define __WCHAR_MAX__ 4294967295U #define __LACCUM_IBIT__ 32 #define __DBL_DENORM_MIN__ ((double)4.9406564584124654e-324L) #define __GCC_ATOMIC_CHAR_LOCK_FREE 1 #define __GCC_IEC_559 0 #define __FLT_EVAL_METHOD__ 0 #define __unix__ 1 #define __LLACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LLK #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 1 #define __FRACT_FBIT__ 15 #define __UINT_FAST64_MAX__ 18446744073709551615ULL #define __SIG_ATOMIC_TYPE__ int #define __UACCUM_FBIT__ 16 #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __ARMEL__ 1 #define __LFRACT_IBIT__ 0 #define __GNUC_PATCHLEVEL__ 0 #define __LFRACT_MAX__ 0X7FFFFFFFP-31LR #define __UINT_FAST8_MAX__ 255 #define __has_include(STR) __has_include__(STR) #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 18446744073709551615ULL #define __SA_FBIT__ 15 #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.7976931348623157e+308L #define __FRACT_MAX__ 0X7FFFP-15R #define __ARM_ARCH_5TE__ 1 #define __UFRACT_FBIT__ 16 #define __ARM_FP 12 #define __UFRACT_MIN__ 0.0UR #define __UINT_LEAST8_MAX__ 255 #define __GCC_ATOMIC_BOOL_LOCK_FREE 1 #define __UINTMAX_TYPE__ long long unsigned int #define __LLFRACT_EPSILON__ 0x1P-63LLR #define __linux 1 #define __DEC32_EPSILON__ 1E-6DF #define __CHAR_UNSIGNED__ 1 #define __UINT32_MAX__ 4294967295U #define __ULFRACT_MAX__ 0XFFFFFFFFP-32ULR #define __TA_IBIT__ 64 #define __LDBL_MAX_EXP__ 1024 #define __WINT_MIN__ 0U #define __linux__ 1 #define __ULLFRACT_MIN__ 0.0ULLR #define __SCHAR_MAX__ 127 #define __WCHAR_MIN__ 0U #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __ARM_NEON_FP 4 #define __GCC_ATOMIC_POINTER_LOCK_FREE 1 #define __LLACCUM_MIN__ (-0X1P31LLK-0X1P31LLK) #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 4 #define __USACCUM_IBIT__ 8 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_HAS_INFINITY__ 1 #define __LFRACT_MIN__ (-0.5LR-0.5LR) #define __HA_IBIT__ 8 #define __TQ_IBIT__ 0 #define __FLT_EPSILON__ 1.1920928955078125e-7F #define __APCS_32__ 1 #define __USFRACT_IBIT__ 0 #define __LDBL_MIN__ 2.2250738585072014e-308L #define __FRACT_MIN__ (-0.5R-0.5R) #define __DEC32_MAX__ 9.999999E96DF #define __DA_IBIT__ 32 #define __ARM_SIZEOF_MINIMAL_ENUM 4 #define __INT32_MAX__ 2147483647 #define __UQQ_FBIT__ 8 #define __SIZEOF_LONG__ 4 #define __UACCUM_MAX__ 0XFFFFFFFFP-16UK #define __UINT16_C(c) c #define __DECIMAL_DIG__ 17 #define __LFRACT_EPSILON__ 0x1P-31LR #define __ULFRACT_MIN__ 0.0ULR #define __has_include_next(STR) __has_include_next__(STR) #define __LDBL_HAS_QUIET_NAN__ 1 #define __ULACCUM_IBIT__ 32 #define __UACCUM_EPSILON__ 0x1P-16UK #define __GNUC__ 4 #define __ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK #define __HQ_IBIT__ 0 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 8 #define __BIGGEST_ALIGNMENT__ 8 #define __DQ_IBIT__ 0 #define __DBL_MAX__ ((double)1.7976931348623157e+308L) #define __ULFRACT_IBIT__ 0 #define __INT_FAST32_MAX__ 2147483647 #define __DBL_HAS_INFINITY__ 1 #define __ACCUM_IBIT__ 16 #define __DEC32_MIN_EXP__ (-94) #define __THUMB_INTERWORK__ 1 #define __LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK #define __INT_FAST16_TYPE__ int #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 2147483647 #define __ARM_PCS 1 #define __DEC32_MIN__ 1E-95DF #define __ACCUM_MAX__ 0X7FFFFFFFP-15K #define __DBL_MAX_EXP__ 1024 #define __USACCUM_EPSILON__ 0x1P-8UHK #define __DEC128_EPSILON__ 1E-33DL #define __SFRACT_MAX__ 0X7FP-7HR #define __FRACT_IBIT__ 0 #define __PTRDIFF_MAX__ 2147483647 #define __UACCUM_MIN__ 0.0UK #define __UACCUM_IBIT__ 16 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 4 #define __ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK #define __SIZEOF_WINT_T__ 4 #define __SA_IBIT__ 16 #define __ULLACCUM_MIN__ 0.0ULLK #define __GXX_ABI_VERSION 999999 #define __UTA_FBIT__ 64 #define __SOFTFP__ 1 #define __FLT_MIN_EXP__ (-125) #define __USFRACT_MAX__ 0XFFP-8UHR #define __UFRACT_IBIT__ 0 #define __ARM_FEATURE_QBIT 1 #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.2250738585072014e-308L) #define __LACCUM_MIN__ (-0X1P31LK-0X1P31LK) #define __ULLACCUM_FBIT__ 32 #define __GXX_TYPEINFO_EQUALITY_INLINE 0 #define __ULLFRACT_EPSILON__ 0x1P-64ULLR #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 65535 #define __DBL_HAS_DENORM__ 1 #define __ACCUM_MIN__ (-0X1P15K-0X1P15K) #define __SQ_IBIT__ 0 #define __UINT8_TYPE__ unsigned char #define __UHA_FBIT__ 8 #define __NO_INLINE__ 1 #define __SFRACT_MIN__ (-0.5HR-0.5HR) #define __UTQ_FBIT__ 128 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "4.9.x 20150123 (prerelease)" #define __UINT64_C(c) c ## ULL #define __ULLFRACT_FBIT__ 64 #define __FRACT_EPSILON__ 0x1P-15R #define __ULACCUM_MIN__ 0.0ULK #define __UDA_FBIT__ 32 #define __LLACCUM_EPSILON__ 0x1P-31LLK #define __GCC_ATOMIC_INT_LOCK_FREE 1 #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__ #define __USFRACT_MIN__ 0.0UHR #define __UQQ_IBIT__ 0 #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __ORDER_PDP_ENDIAN__ 3412 #define __DEC128_MIN_EXP__ (-6142) #define __UHQ_FBIT__ 16 #define __LLACCUM_FBIT__ 31 #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define unix 1 #define __INT16_MAX__ 32767 #define __SIZE_TYPE__ unsigned int #define __UINT64_MAX__ 18446744073709551615ULL #define __UDQ_FBIT__ 64 #define __INT8_TYPE__ signed char #define __ELF__ 1 #define __ULFRACT_EPSILON__ 0x1P-32ULR #define __LLFRACT_FBIT__ 63 #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 2.2204460492503131e-16L #define __UINTMAX_C(c) c ## ULL #define __SACCUM_MAX__ 0X7FFFP-7HK #define __SIG_ATOMIC_MAX__ 2147483647 #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 1 #define __VFP_FP__ 1 #define __SIZEOF_PTRDIFF_T__ 4 #define __LACCUM_EPSILON__ 0x1P-31LK #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __INT_FAST16_MAX__ 2147483647 #define __UINT_FAST32_MAX__ 4294967295U #define __UINT_LEAST64_TYPE__ long long unsigned int #define __USACCUM_MAX__ 0XFFFFP-8UHK #define __SFRACT_EPSILON__ 0x1P-7HR #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 __unix 1 #define __USA_FBIT__ 16 #define __UINT_FAST16_TYPE__ unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __ARM_32BIT_STATE 1 #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 32767 #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 9223372036854775807LL #define __UINT_LEAST32_MAX__ 4294967295U #define __SACCUM_FBIT__ 7 #define __GCC_ATOMIC_LONG_LOCK_FREE 1 #define __INT_LEAST64_TYPE__ long long int #define __ARM_FEATURE_CLZ 1 #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __SQ_FBIT__ 31 #define __DEC32_MAX_EXP__ 97 #define __ARM_ARCH_ISA_THUMB 1 #define __INT_FAST8_MAX__ 127 #define __ARM_ARCH 5 #define __INTPTR_MAX__ 2147483647 #define __QQ_FBIT__ 7 #define linux 1 #define __UTA_IBIT__ 64 #define __LDBL_MANT_DIG__ 53 #define __SFRACT_FBIT__ 7 #define __SACCUM_MIN__ (-0X1P7HK-0X1P7HK) #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ unsigned int #define __SIZEOF_FLOAT__ 4 #define __USQ_FBIT__ 32 #define __pic__ 1 #define __UINTPTR_MAX__ 4294967295U #define __DEC64_MIN_EXP__ (-382) #define __ULLACCUM_IBIT__ 32 #define __INT_FAST64_MAX__ 9223372036854775807LL #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1 #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 2147483647 #define __LACCUM_FBIT__ 31 #define __USACCUM_MIN__ 0.0UHK #define __UHA_IBIT__ 8 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define __UTQ_IBIT__ 0 #define __DBL_MANT_DIG__ 53 #define __INT_LEAST64_MAX__ 9223372036854775807LL #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 1 #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __ULLFRACT_IBIT__ 0 #define __LDBL_MIN_EXP__ (-1021) #define __arm__ 1 #define __UDA_IBIT__ 32 #define __INT_LEAST8_MAX__ 127 #define __LFRACT_FBIT__ 31 #define __LDBL_MAX_10_EXP__ 308 #define __ATOMIC_RELAXED 0 #define __DBL_EPSILON__ ((double)2.2204460492503131e-16L) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 4 #define __UINT64_TYPE__ long long unsigned int #define __LLFRACT_MAX__ 0X7FFFFFFFFFFFFFFFP-63LLR #define __TQ_FBIT__ 127 #define __INT_FAST8_TYPE__ signed char #define __ULLACCUM_EPSILON__ 0x1P-32ULLK #define __UHQ_IBIT__ 0 #define __LLACCUM_IBIT__ 32 #define __DBL_DECIMAL_DIG__ 17 #define __DEC_EVAL_METHOD__ 2 #define __TA_FBIT__ 63 #define __UDQ_IBIT__ 0 #define __ORDER_BIG_ENDIAN__ 4321 #define __ACCUM_EPSILON__ 0x1P-15K #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 9223372036854775807LL #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ #define __FLT_DENORM_MIN__ 1.4012984643248171e-45F #define __LLFRACT_IBIT__ 0 #define __INT8_MAX__ 127 #define __PIC__ 1 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.4028234663852886e+38F #define __USACCUM_FBIT__ 8 #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __UFRACT_EPSILON__ 0x1P-16UR #define __INTMAX_TYPE__ long long int #define __DEC128_MAX_EXP__ 6145 #define __ATOMIC_CONSUME 1 #define __GNUC_MINOR__ 9 #define __UINTMAX_MAX__ 18446744073709551615ULL #define __DEC32_MANT_DIG__ 7 #define __HA_FBIT__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ int #define __LLFRACT_MIN__ (-0.5LLR-0.5LLR) #define __ATOMIC_SEQ_CST 5 #define __DA_FBIT__ 31 #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ unsigned int #define __USA_IBIT__ 16 #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD #define __ARM_EABI__ 1 #define __DEC128_MANT_DIG__ 34 #define __LDBL_MIN_10_EXP__ (-307) #define __SIZEOF_LONG_LONG__ 8 #define __ULACCUM_EPSILON__ 0x1P-32ULK #define __SACCUM_IBIT__ 8 #define __GCC_ATOMIC_LLONG_LOCK_FREE 1 #define __LDBL_DIG__ 15 #define __FLT_DECIMAL_DIG__ 9 #define __UINT_FAST16_MAX__ 4294967295U #define __GNUC_GNU_INLINE__ 1 #define __GCC_ATOMIC_SHORT_LOCK_FREE 1 #define __ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR #define __UINT_FAST8_TYPE__ unsigned char #define __USFRACT_EPSILON__ 0x1P-8UHR #define __ULACCUM_FBIT__ 32 #define __ARM_FEATURE_DSP 1 #define __QQ_IBIT__ 0 #define __ATOMIC_ACQ_REL 4 #define __ATOMIC_RELEASE 3
参考
-
查看编译器预定义宏
2012-06-04 11:35:57在Linux下,可以用下面的命令查看预定义宏: touch a.h # 创建一个空文件 cpp -dM a.h # 查看预定义宏 2. 使用c语言写程序时,通常使用大量的宏来简化程序编写,使得程序看起来更加简洁。但是有时候编译...1.
在Windows下,在VS的工程属性中,可以查看预定义宏,例如有WIN32这样的宏。
在Linux下,可以用下面的命令查看预定义宏:
touch a.h # 创建一个空文件
cpp -dM a.h # 查看预定义宏
2.
使用c语言写程序时,通常使用大量的宏来简化程序编写,使得程序看起来更加简洁。但是有时候编译程序时,提示在宏的地方出错,如何查看宏替换后的结果呢?很简单的办法是在gcc的option里面加入-save-temps选项,gcc编译程序时会在当前目录下产生一个*.i或者*.ii的文件,查看这个文件就知道宏替换后的结果。
3.
gcc -E选项可以查看预编译结果,同样在VC下,把C/C++-》预处理器-》生成预处理文件 勾上也可以,但是你rebuild时会发现报一个Link错误说找不到stdafx.obj文件,这很正常,不要惊慌,VC只做了预处理,所以自然没有.obj文件,只不过它的连接器不应该报这个错罢了,在.cpp的同目录下可以找到对应的.i文件。展开前,建议把系统头文件注掉,不然结果文件很大很大,你不知道你想看的部分展开在哪了。 -
linux/windows下获取gcc(mingw)编译器预定义宏的方式
2015-10-10 14:23:23我们在阅读一些源代码时经常发现类似这样的宏WIN32,_WIN64,__x86_64,__linux却找不到在哪里定义的,这些其实是编译器预定义的宏。在不同的操作系统内容不同。 为了知道gcc编译器都预定义了哪些宏, 在window下可以...我们在阅读一些源代码时经常发现类似这样的宏
WIN32,_WIN64,__x86_64,__linux
却找不到在哪里定义的,这些其实是编译器预定义的宏。在不同的操作系统内容不同。
为了知道gcc编译器都预定义了哪些宏,
在window下可以输入如下命令:gcc -posix -E -dM - < nul
linux下,命令稍有不同
gcc -posix -E -dM - < /dev/null
这是windows下gcc(mingw)的输出结果
#define __DBL_MIN_EXP__ (-1021) #define __UINT_LEAST16_MAX__ 0xffff #define __ATOMIC_ACQUIRE 2 #define __FLT_MIN__ 1.17549435082228750797e-38F #define __GCC_IEC_559_COMPLEX 2 #define __UINT_LEAST8_TYPE__ unsigned char #define __SIZEOF_FLOAT80__ 16 #define _WIN32 1 #define __INTMAX_C(c) c ## LL #define __CHAR_BIT__ 8 #define __UINT8_MAX__ 0xff #define _WIN64 1 #define __WINT_MAX__ 0xffff #define __ORDER_LITTLE_ENDIAN__ 1234 #define __SIZE_MAX__ 0xffffffffffffffffULL #define __WCHAR_MAX__ 0xffff #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__ ((double)4.94065645841246544177e-324L) #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __GCC_ATOMIC_CHAR_LOCK_FREE 2 #define __GCC_IEC_559 2 #define __FLT_EVAL_METHOD__ 0 #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2 #define __x86_64 1 #define __UINT_FAST64_MAX__ 0xffffffffffffffffULL #define __SIG_ATOMIC_TYPE__ int #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 0 #define __UINT_FAST8_MAX__ 0xff #define __has_include(STR) __has_include__(STR) #define _stdcall __attribute__((__stdcall__)) #define __DEC64_MAX_EXP__ 385 #define __INT8_C(c) c #define __UINT_LEAST64_MAX__ 0xffffffffffffffffULL #define __SHRT_MAX__ 0x7fff #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINT_LEAST8_MAX__ 0xff #define __GCC_ATOMIC_BOOL_LOCK_FREE 2 #define __UINTMAX_TYPE__ long long unsigned int #define __DEC32_EPSILON__ 1E-6DF #define __UINT32_MAX__ 0xffffffffU #define __LDBL_MAX_EXP__ 16384 #define __WINT_MIN__ 0 #define __SCHAR_MAX__ 0x7f #define __WCHAR_MIN__ 0 #define __INT64_C(c) c ## LL #define __DBL_DIG__ 15 #define __GCC_ATOMIC_POINTER_LOCK_FREE 2 #define _POSIX_SOURCE 1 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 8 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __WIN32 1 #define __LDBL_HAS_INFINITY__ 1 #define __WIN64 1 #define __FLT_EPSILON__ 1.19209289550781250000e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __STDC_UTF_16__ 1 #define __DEC32_MAX__ 9.999999E96DF #define __MINGW32__ 1 #define __INT32_MAX__ 0x7fffffff #define __SIZEOF_LONG__ 4 #define __UINT16_C(c) c #define __DECIMAL_DIG__ 21 #define __has_include_next(STR) __has_include_next__(STR) #define __LDBL_HAS_QUIET_NAN__ 1 #define _REENTRANT 1 #define __GNUC__ 5 #define _cdecl __attribute__((__cdecl__)) #define __MMX__ 1 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 16 #define __BIGGEST_ALIGNMENT__ 16 #define __DBL_MAX__ ((double)1.79769313486231570815e+308L) #define _thiscall __attribute__((__thiscall__)) #define __INT_FAST32_MAX__ 0x7fffffff #define __WINNT 1 #define __DBL_HAS_INFINITY__ 1 #define __WINNT__ 1 #define __DEC32_MIN_EXP__ (-94) #define __INT_FAST16_TYPE__ short int #define _fastcall __attribute__((__fastcall__)) #define __LDBL_HAS_DENORM__ 1 #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL #define __INT_LEAST32_MAX__ 0x7fffffff #define __DEC32_MIN__ 1E-95DF #define __DBL_MAX_EXP__ 1024 #define __DEC128_EPSILON__ 1E-33DL #define __SSE2_MATH__ 1 #define __ATOMIC_HLE_RELEASE 131072 #define __WIN32__ 1 #define __PTRDIFF_MAX__ 0x7fffffffffffffffLL #define __amd64 1 #define __tune_core2__ 1 #define __ATOMIC_HLE_ACQUIRE 65536 #define __LONG_LONG_MAX__ 0x7fffffffffffffffLL #define __SIZEOF_SIZE_T__ 8 #define __SIZEOF_WINT_T__ 2 #define __GXX_ABI_VERSION 1009 #define __FLT_MIN_EXP__ (-125) #define __INT_FAST64_TYPE__ long long int #define __DBL_MIN__ ((double)2.22507385850720138309e-308L) #define __DECIMAL_BID_FORMAT__ 1 #define __GXX_TYPEINFO_EQUALITY_INLINE 0 #define __DEC128_MIN__ 1E-6143DL #define __REGISTER_PREFIX__ #define __UINT16_MAX__ 0xffff #define __DBL_HAS_DENORM__ 1 #define __cdecl __attribute__((__cdecl__)) #define __UINT8_TYPE__ unsigned char #define __NO_INLINE__ 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "5.2.0" #define __UINT64_C(c) c ## ULL #define __GCC_ATOMIC_INT_LOCK_FREE 2 #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__ #define __INT32_C(c) c #define __DEC64_EPSILON__ 1E-15DD #define __ORDER_PDP_ENDIAN__ 3412 #define __DEC128_MIN_EXP__ (-6142) #define __INT_FAST32_TYPE__ int #define __UINT_LEAST16_TYPE__ short unsigned int #define __INT16_MAX__ 0x7fff #define __SIZE_TYPE__ long long unsigned int #define __UINT64_MAX__ 0xffffffffffffffffULL #define __INT8_TYPE__ signed char #define __FLT_RADIX__ 2 #define __INT_LEAST16_TYPE__ short int #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __UINTMAX_C(c) c ## ULL #define __SSE_MATH__ 1 #define __SEH__ 1 #define __SIG_ATOMIC_MAX__ 0x7fffffff #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2 #define __SIZEOF_PTRDIFF_T__ 8 #define __x86_64__ 1 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __MSVCRT__ 1 #define __INT_FAST16_MAX__ 0x7fff #define __UINT_FAST32_MAX__ 0xffffffffU #define __UINT_LEAST64_TYPE__ long long unsigned int #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 0x7fffffffL #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL #define __FLT_HAS_INFINITY__ 1 #define __UINT_FAST16_TYPE__ short unsigned int #define __DEC64_MAX__ 9.999999999999999E384DD #define __CHAR16_TYPE__ short unsigned int #define __PRAGMA_REDEFINE_EXTNAME 1 #define __INT_LEAST16_MAX__ 0x7fff #define __DEC64_MANT_DIG__ 16 #define __INT64_MAX__ 0x7fffffffffffffffLL #define __UINT_LEAST32_MAX__ 0xffffffffU #define __GCC_ATOMIC_LONG_LOCK_FREE 2 #define __INT_LEAST64_TYPE__ long long int #define __INT16_TYPE__ short int #define __INT_LEAST8_TYPE__ signed char #define __STDC_VERSION__ 201112L #define __DEC32_MAX_EXP__ 97 #define __INT_FAST8_MAX__ 0x7f #define __INTPTR_MAX__ 0x7fffffffffffffffLL #define __GXX_MERGED_TYPEINFO_NAMES 0 #define __stdcall __attribute__((__stdcall__)) #define __SSE2__ 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) #define __INTPTR_TYPE__ long long int #define __UINT16_TYPE__ short unsigned int #define __WCHAR_TYPE__ short unsigned int #define __SIZEOF_FLOAT__ 4 #define __pic__ 1 #define __UINTPTR_MAX__ 0xffffffffffffffffULL #define __DEC64_MIN_EXP__ (-382) #define __INT_FAST64_MAX__ 0x7fffffffffffffffLL #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1 #define __FLT_DIG__ 6 #define __UINT_FAST64_TYPE__ long long unsigned int #define __INT_MAX__ 0x7fffffff #define __amd64__ 1 #define WIN32 1 #define __nocona 1 #define __code_model_medium__ 1 #define __INT64_TYPE__ long long int #define __FLT_MAX_EXP__ 128 #define WIN64 1 #define __ORDER_BIG_ENDIAN__ 4321 #define __DBL_MANT_DIG__ 53 #define __SIZEOF_FLOAT128__ 16 #define __INT_LEAST64_MAX__ 0x7fffffffffffffffLL #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2 #define __DEC64_MIN__ 1E-383DD #define __WINT_TYPE__ short unsigned int #define __UINT_LEAST32_TYPE__ unsigned int #define __SIZEOF_SHORT__ 2 #define __SSE__ 1 #define __LDBL_MIN_EXP__ (-16381) #define __INT_LEAST8_MAX__ 0x7f #define __SIZEOF_INT128__ 16 #define __LDBL_MAX_10_EXP__ 4932 #define __ATOMIC_RELAXED 0 #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L) #define __thiscall __attribute__((__thiscall__)) #define __UINT8_C(c) c #define __INT_LEAST32_TYPE__ int #define __SIZEOF_WCHAR_T__ 2 #define __UINT64_TYPE__ long long unsigned int #define __INT_FAST8_TYPE__ signed char #define __fastcall __attribute__((__fastcall__)) #define __GNUC_STDC_INLINE__ 1 #define __DBL_DECIMAL_DIG__ 17 #define __STDC_UTF_32__ 1 #define __FXSR__ 1 #define __DEC_EVAL_METHOD__ 2 #define __MINGW64__ 1 #define __UINT32_C(c) c ## U #define __INTMAX_MAX__ 0x7fffffffffffffffLL #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ #define WINNT 1 #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F #define __INT8_MAX__ 0x7f #define __PIC__ 1 #define __UINT_FAST32_TYPE__ unsigned int #define __CHAR32_TYPE__ unsigned int #define __FLT_MAX__ 3.40282346638528859812e+38F #define __INT32_TYPE__ int #define __SIZEOF_DOUBLE__ 8 #define __FLT_MIN_10_EXP__ (-37) #define __INTMAX_TYPE__ long long int #define _INTEGRAL_MAX_BITS 64 #define __DEC128_MAX_EXP__ 6145 #define __ATOMIC_CONSUME 1 #define __nocona__ 1 #define __GNUC_MINOR__ 2 #define __UINTMAX_MAX__ 0xffffffffffffffffULL #define __DEC32_MANT_DIG__ 7 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __INT16_C(c) c #define __STDC__ 1 #define __PTRDIFF_TYPE__ long long int #define __ATOMIC_SEQ_CST 5 #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1 #define __UINT32_TYPE__ unsigned int #define __UINTPTR_TYPE__ long long unsigned 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 __GCC_ATOMIC_LLONG_LOCK_FREE 2 #define __LDBL_DIG__ 18 #define __FLT_DECIMAL_DIG__ 9 #define __UINT_FAST16_MAX__ 0xffff #define __GCC_ATOMIC_SHORT_LOCK_FREE 2 #define __SSE3__ 1 #define __UINT_FAST8_TYPE__ unsigned char #define __WIN64__ 1 #define __ATOMIC_ACQ_REL 4 #define __ATOMIC_RELEASE 3 #define __declspec(x) __attribute__((x))
这是linux下的输出结果
#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 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 #define __FLT_EVAL_METHOD__ 0 #define __unix__ 1 #define __x86_64 1 #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 7 #define __DEC64_MAX_EXP__ 385 #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __UINTMAX_TYPE__ 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 _POSIX_SOURCE 1 #define __SIZEOF_INT__ 4 #define __SIZEOF_POINTER__ 8 #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__ 8 #define __DECIMAL_DIG__ 21 #define __gnu_linux__ 1 #define __LDBL_HAS_QUIET_NAN__ 1 #define __GNUC__ 4 #define __MMX__ 1 #define __FLT_HAS_DENORM__ 1 #define __SIZEOF_LONG_DOUBLE__ 16 #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 __SSE2_MATH__ 1 #define __amd64 1 #define __LONG_LONG_MAX__ 9223372036854775807LL #define __SIZEOF_SIZE_T__ 8 #define __SIZEOF_WINT_T__ 4 #define __GCC_HAVE_DWARF2_CFI_ASM 1 #define __GXX_ABI_VERSION 1002 #define __FLT_MIN_EXP__ (-125) #define __DBL_MIN__ 2.2250738585072014e-308 #define __LP64__ 1 #define __DECIMAL_BID_FORMAT__ 1 #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.4.7 20120313 (Red Hat 4.4.7-11)" #define __DEC64_EPSILON__ 1E-15DD #define __DEC128_MIN_EXP__ (-6142) #define unix 1 #define __SIZE_TYPE__ long unsigned int #define __ELF__ 1 #define __FLT_RADIX__ 2 #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __GNUC_RH_RELEASE__ 11 #define __SSE_MATH__ 1 #define __k8 1 #define __SIZEOF_PTRDIFF_T__ 8 #define __x86_64__ 1 #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF #define __FLT_HAS_QUIET_NAN__ 1 #define __FLT_MAX_10_EXP__ 38 #define __LONG_MAX__ 9223372036854775807L #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 __SSE2__ 1 #define __LDBL_MANT_DIG__ 64 #define __DBL_HAS_QUIET_NAN__ 1 #define __k8__ 1 #define __WCHAR_TYPE__ int #define __SIZEOF_FLOAT__ 4 #define __DEC64_MIN_EXP__ (-382) #define __FLT_DIG__ 6 #define __INT_MAX__ 2147483647 #define __amd64__ 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 __SSE__ 1 #define __LDBL_MIN_EXP__ (-16381) #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ 2.2204460492503131e-16 #define _LP64 1 #define __SIZEOF_WCHAR_T__ 4 #define __DEC_EVAL_METHOD__ 2 #define __INTMAX_MAX__ 9223372036854775807L #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 int #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__ long 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__ 1
-
编译器预定义宏(Pre-defined C/C++ Compiler Macros)
2013-06-19 18:14:28在很多*nix环境的代码中,包含了__linux__,或者__GNUC__等字符串。这些字符串实际上为编译器预先定义的宏。可以通过如下命令,显示预处理时定义的宏。 "touch 1.h" "gcc -E -dM 1.h" 其中有个不错的连接,...在很多*nix环境的代码中,包含了__linux__,或者__GNUC__等字符串。这些字符串实际上为编译器预先定义的宏。可以通过如下命令,显示预处理时定义的宏。
"touch 1.h" "gcc -E -dM 1.h"
其中有个不错的连接,介绍了不同编译器的宏定义:
http://sourceforge.net/p/predef/wiki/Home/
也可以参考gcc预处理选项-dCHARS:
http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html -
Intel C++编译器的预定义宏(Windows版、Linux版)
2014-02-08 14:02:38Intel C++编译器的预定义宏(Windows版、Linux版) 转载自:http://www.cnblogs.com/zyl910/archive/2012/07/06/intel_predefined_macros.html 网上有很多介绍VC与GCC预定义宏的帖子,例如《C\C++宏... -
[转]Intel C++编译器的预定义宏(Windows版、Linux版)
2012-11-16 23:39:37[笔记] Intel C++编译器的预定义宏(Windows版、Linux版) 网上有很多介绍VC与GCC预定义宏的帖子,例如《C\C++宏大全》。 而对于Intel C++编译器的预定义宏,似乎没人介绍。 我Google了很久,发现Intel官网... -
[转载] Intel C++编译器的预定义宏(Windows版、Linux版)
2012-08-03 15:00:00网上有很多介绍VC与GCC预定义宏的帖子,例如《C\C++宏大全》。... 而对于Intel C++编译器的预定义宏,似乎没人介绍。 我Google了很久,发现Intel官网上有,但是很奇怪,很多链接都失效了,报告40... -
[笔记] Intel C++编译器的预定义宏(Windows版、Linux版)
2012-10-18 11:02:40而对于Intel C++编译器的预定义宏,似乎没人介绍。 我Google了很久,发现Intel官网上有,但是很奇怪,很多链接都失效了,报告404错误。反复调整搜索关键字,一个一个的尝试链接,最后终于找到了 -
arm-linux-androideabi-gcc 预定义宏(编译器版本4.8)
2015-07-31 20:24:45打印方法: ...arm-linux-androideabi-gcc -E -dM -c test.c >> marco_arm.txt #define __DBL_MIN_EXP__ (-1021) #define __HQ_FBIT__ 15 #define __UINT_LEAST16_MAX__ 65535 #define __ARM_SIZEOF_WCHAR_T -
GCC/G++编译器和VS IDE中的一些预定义宏和用户自定义宏
2017-01-11 17:18:34预定义宏, 编译器通常会根据平台和编译选项的不同,为被编译的程序提供不同的预定义的宏, 例如WIN32 WIN64 LINUX, 例如DEBUG, RELEASE. 1. 在使用gcc/g++编译器时,可以通过以下命令打印出编译器预编译... -
(转)GCC/G++编译器和VS IDE中的一些预定义宏和用户自定义宏
2014-08-02 12:38:00预定义宏 编译器通常会根据平台和编译选项的不同,为被编译的程序提供不同的预定义的宏, 例如WIN32 WIN64 LINUX, 例如DEBUG, RELEASE. 1. 在使用gcc/g++编译器时,可以通过以下命令打印出编译器预编译的宏。 ... -
跨平台c/c++编码的预定义宏
2013-11-02 13:14:24首先,不同平台中编译器预定义宏的参考资料 点击这里 其次,我本人仅关注以下平台:linux32/64-gcc, win32/64-vc, win32/64-mingw,这里给一个我自用的侦测上述平台的头文件 /** * @file - * @author jingqi ... -
C/C++编译器预定宏使用
2017-04-27 14:09:29在C/C++编译器中,会有编译器级别的预定义宏,__FILE__,__LINE__,__FUNCTION__,__DATE__,__TIME__等。 下面来一一介绍这几个宏的含义: __FILE__ 当前文件的文件名,linux下GCC只有文件名,而在windows下GCC会... -
从预定义宏区分编译环境
2019-11-21 02:05:57要做跨平台编译,gcc跨Linux/Windows/Mac平台,所以这里只说gcc编译器下怎么区分操作系统 可以用以下命令行获取GCC定义的预编译宏: $ < /dev/null gcc - -march=i386 -dM -E < /dev/null | sort (i386... -
makefile-理解
2019-06-26 18:49:32参考文章: gcc_编译器预定义宏_是否为空 ... linux/windows下获取gcc(mingw)编译器预定义宏的方式 https://blog.csdn.net/10km/article/details/49023471 首先,了解一下Ubuntu16.04默认... -
C/C++可变参数,“## __VA_ARGS__”宏的介绍和使用
2017-09-25 10:34:13在阅读代码的时候,在一个宏定义语句中,发现了个之前未曾见过的编译器预定义宏:“__VA_ARGS__”。当时,从代码语句中推测它代表宏参数:“…”(本文称之为省略号),依稀记得printf函数声明中有使用这个省略号,... -
jetway_loves_programming之linuxC学习之Linux 下Makefile的automake生成简单例子
2011-05-23 16:11:00Makefile 是用于自动编译和链接的,一个工程文件可以由很多文件... 使用automake,程序员只需要写一些简单的含有预定义宏的文件,由autoconf根据一个宏文件生成configure,由automake根据另一个宏文件生成 -
linux中的 __VA_ARGS__ 宏说明
2018-08-15 15:14:33可变参数宏 ...和_ _VA_ARGS_ _ __VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新...这样预定义宏__VA_ARGS__就可以被用在替换部分中,替换省略号所代表的字符串。比如: #define PR(...) p... -
cygwin编译环境小记
2015-10-21 19:32:00[gcc] 预定义宏 编译器通常会根据平台和编译选项的不同,为被编译的程序提供不同的预定义的宏, 例如WIN32 WIN64 LINUX, 例如DEBUG, RELEASE. ...除了预定义宏,编译器还允许在编译时, 还可以自定义... -
C++ 中宏的使用 --来自:http://blog.csdn.net/hgl868/article/details/7058906
2016-06-17 14:53:00宏在代码中的使用实例: g_RunLog2("Middleware client for Linux, build:%s %s", __DATE__, __TIME__); 下面详细介绍宏: ... 这些预定义宏可以被#undef, 也可以被重定义。 在ANSI C标准中定义了__... -
C语言编程魔法书:基于C11标准.陈轶(带书签文字版).pdf
2018-04-21 16:20:2010.2.1 C语言强制要求的预定义宏 243 10.2.2 环境宏 244 10.2.3 条件特征宏 245 10.2.4 主流编译器及平台预定义的宏 246 10.3 条件预编译 247 10.4 源文件包含预处理指示符 251 10.5 #error 预处理指示符 256...
收藏数
27
精华内容
10
-
scala java 数据类型转换_Java、Scala类型检查和类型转换
-
MySQL 数据库权限管理(用户高级管理和精确访问控制)
-
java 杭电acm1005_杭电ACM1005总结,递归太深造成堆栈溢出
-
java 移动短代支付_cocos2d-x嵌入移动MM短代支付IAP2.4的SDK,点击支付崩溃的解决的方法...
-
使用世界知识改进社区问题解答中的问题检索
-
深究字符编码的奥秘,与乱码说再见
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
交替方向块稀疏信号快速重构算法
-
vue3从0到1-超详细
-
Windows7瘦身工具 2.0x64.rar
-
java面试用背的_JAVASE经典面试问题(必须熟背),你Get到了吗?
-
统计机器翻译通过矩阵分解提高了社区问题解答中的问题检索
-
windows系统禁用休眠bat文件.rar
-
MySQL DML 语言(插入、更新与删除数据)
-
Unity RUST 逆向安全开发
-
基于层次深层信念网络的点语音连续词句点处理模型
-
朱老师鸿蒙系列课程第1期-2鸿蒙系统Harmonyos源码架构分析
-
如何正确认识大数据分析
-
牛牛量化策略交易
-
MySQL 数据类型和运算符