Chinaunix首页 | 论坛 | 博客
  • 博客访问: 477821
  • 博文数量: 63
  • 博客积分: 1485
  • 博客等级: 上尉
  • 技术积分: 596
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 14:49
文章分类

全部博文(63)

文章存档

2018年(8)

2017年(25)

2016年(10)

2012年(6)

2010年(14)

我的朋友

分类: LINUX

2016-07-27 16:18:55

"C89","C99"是不同的标准,其中有很多差异。
可以通过如下命令,查看当前版本的gcc在不同标准的一些异同。

如下命令,用于查看当前gcc所支持的默认"-std"的信息。自己编译过的gcc,一些信息会不同。
  1. gcc -posix -E -dM - < /dev/null
结果如下:

点击(此处)折叠或打开

  1. #define __DBL_MIN_EXP__ (-1021)
  2. #define __FLT_MIN__ 1.17549435e-38F
  3. #define __CHAR_BIT__ 8
  4. #define __WCHAR_MAX__ 2147483647
  5. #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
  6. #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
  7. #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
  8. #define __DBL_DENORM_MIN__ 4.9406564584124654e-324
  9. #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
  10. #define __FLT_EVAL_METHOD__ 0
  11. #define __unix__ 1
  12. #define __x86_64 1
  13. #define __DBL_MIN_10_EXP__ (-307)
  14. #define __FINITE_MATH_ONLY__ 0
  15. #define __GNUC_PATCHLEVEL__ 4
  16. #define __DEC64_MAX_EXP__ 385
  17. #define __SHRT_MAX__ 32767
  18. #define __LDBL_MAX__ 1.18973149535723176502e+4932L
  19. #define __UINTMAX_TYPE__ long unsigned int
  20. #define __linux 1
  21. #define __DEC32_EPSILON__ 1E-6DF
  22. #define __unix 1
  23. #define __LDBL_MAX_EXP__ 16384
  24. #define __linux__ 1
  25. #define __SCHAR_MAX__ 127
  26. #define __DBL_DIG__ 15
  27. #define _POSIX_SOURCE 1
  28. #define __SIZEOF_INT__ 4
  29. #define __SIZEOF_POINTER__ 8
  30. #define __USER_LABEL_PREFIX__
  31. #define __STDC_HOSTED__ 1
  32. #define __LDBL_HAS_INFINITY__ 1
  33. #define __FLT_EPSILON__ 1.19209290e-7F
  34. #define __LDBL_MIN__ 3.36210314311209350626e-4932L
  35. #define __DEC32_MAX__ 9.999999E96DF
  36. #define __SIZEOF_LONG__ 8
  37. #define __DECIMAL_DIG__ 21
  38. #define __gnu_linux__ 1
  39. #define __LDBL_HAS_QUIET_NAN__ 1
  40. #define __GNUC__ 4
  41. #define __MMX__ 1
  42. #define __FLT_HAS_DENORM__ 1
  43. #define __SIZEOF_LONG_DOUBLE__ 16
  44. #define __BIGGEST_ALIGNMENT__ 16
  45. #define __DBL_MAX__ 1.7976931348623157e+308
  46. #define __DBL_HAS_INFINITY__ 1
  47. #define __DEC32_MIN_EXP__ (-94)
  48. #define __LDBL_HAS_DENORM__ 1
  49. #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
  50. #define __DEC32_MIN__ 1E-95DF
  51. #define __DBL_MAX_EXP__ 1024
  52. #define __DEC128_EPSILON__ 1E-33DL
  53. #define __SSE2_MATH__ 1
  54. #define __amd64 1
  55. #define __LONG_LONG_MAX__ 9223372036854775807LL
  56. #define __SIZEOF_SIZE_T__ 8
  57. #define __SIZEOF_WINT_T__ 4
  58. #define __GCC_HAVE_DWARF2_CFI_ASM 1
  59. #define __GXX_ABI_VERSION 1002
  60. #define __FLT_MIN_EXP__ (-125)
  61. #define __DBL_MIN__ 2.2250738585072014e-308
  62. #define __LP64__ 1
  63. #define __DECIMAL_BID_FORMAT__ 1
  64. #define __DEC128_MIN__ 1E-6143DL
  65. #define __REGISTER_PREFIX__
  66. #define __DBL_HAS_DENORM__ 1
  67. #define __NO_INLINE__ 1
  68. #define __FLT_MANT_DIG__ 24
  69. #define __VERSION__ "4.4.4 20100726 (Red Hat 4.4.4-13)"
  70. #define __DEC64_EPSILON__ 1E-15DD
  71. #define __DEC128_MIN_EXP__ (-6142)
  72. #define unix 1
  73. #define __SIZE_TYPE__ long unsigned int
  74. #define __ELF__ 1
  75. #define __FLT_RADIX__ 2
  76. #define __LDBL_EPSILON__ 1.08420217248550443401e-19L
  77. #define __GNUC_RH_RELEASE__ 13
  78. #define __SSE_MATH__ 1
  79. #define __k8 1
  80. #define __SIZEOF_PTRDIFF_T__ 8
  81. #define __x86_64__ 1
  82. #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
  83. #define __FLT_HAS_QUIET_NAN__ 1
  84. #define __FLT_MAX_10_EXP__ 38
  85. #define __LONG_MAX__ 9223372036854775807L
  86. #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
  87. #define __FLT_HAS_INFINITY__ 1
  88. #define __DEC64_MAX__ 9.999999999999999E384DD
  89. #define __CHAR16_TYPE__ short unsigned int
  90. #define __DEC64_MANT_DIG__ 16
  91. #define __DEC32_MAX_EXP__ 97
  92. #define linux 1
  93. #define __SSE2__ 1
  94. #define __LDBL_MANT_DIG__ 64
  95. #define __DBL_HAS_QUIET_NAN__ 1
  96. #define __k8__ 1
  97. #define __WCHAR_TYPE__ int
  98. #define __SIZEOF_FLOAT__ 4
  99. #define __DEC64_MIN_EXP__ (-382)
  100. #define __FLT_DIG__ 6
  101. #define __INT_MAX__ 2147483647
  102. #define __amd64__ 1
  103. #define __FLT_MAX_EXP__ 128
  104. #define __DBL_MANT_DIG__ 53
  105. #define __DEC64_MIN__ 1E-383DD
  106. #define __WINT_TYPE__ unsigned int
  107. #define __SIZEOF_SHORT__ 2
  108. #define __SSE__ 1
  109. #define __LDBL_MIN_EXP__ (-16381)
  110. #define __LDBL_MAX_10_EXP__ 4932
  111. #define __DBL_EPSILON__ 2.2204460492503131e-16
  112. #define _LP64 1
  113. #define __SIZEOF_WCHAR_T__ 4
  114. #define __DEC_EVAL_METHOD__ 2
  115. #define __INTMAX_MAX__ 9223372036854775807L
  116. #define __FLT_DENORM_MIN__ 1.40129846e-45F
  117. #define __CHAR32_TYPE__ unsigned int
  118. #define __FLT_MAX__ 3.40282347e+38F
  119. #define __SIZEOF_DOUBLE__ 8
  120. #define __FLT_MIN_10_EXP__ (-37)
  121. #define __INTMAX_TYPE__ long int
  122. #define __DEC128_MAX_EXP__ 6145
  123. #define __GNUC_MINOR__ 4
  124. #define __DEC32_MANT_DIG__ 7
  125. #define __DBL_MAX_10_EXP__ 308
  126. #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
  127. #define __STDC__ 1
  128. #define __PTRDIFF_TYPE__ long int
  129. #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
  130. #define __DEC128_MANT_DIG__ 34
  131. #define __LDBL_MIN_10_EXP__ (-4931)
  132. #define __SIZEOF_LONG_LONG__ 8
  133. #define __LDBL_DIG__ 18
  134. #define __GNUC_GNU_INLINE__ 1

也可以指定"-std",来查看信息:
  1. gcc -std=c99 -posix -E -dM - < /dev/null
  2. gcc -std=c89 -posix -E -dM - < /dev/null

其中"C99"的结果中包含下面的信息,而"C89"不包含:
  1. #define __STDC_VERSION__ 199901L

阅读(3990) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

arm_zwinger2016-09-30 11:17:52

关于gcc的一些操作,这个链接可以看看:
\"gcc选项--显示include的路径\"   http://blog.csdn.net/sourthstar/article/details/7735820

arm_zwinger2016-09-30 11:14:49

用这个命令也能得到相似的列表:

cpp -dM /dev/null


上面的命令输出与“gcc -posix -E -dM - < /dev/null“是一模一样的。

但如果指定了posix,如:gcc -posix -E -dM - < /dev/null,那么结果会有一点点差别:
gcc -posix的输出中会包含:
#define _POSIX_SOURCE1

arm_zwinger2016-07-27 16:20:16

这里给出了一些C99引入的特性。
http://blog.csdn.net/iefswang/article/details/8499226