You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 line
6.1KB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1987-2020 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this document
  5. under the terms of the GNU Free Documentation License, Version 1.3 or
  6. any later version published by the Free Software Foundation. A copy of
  7. the license is included in the
  8. section entitled "GNU Free Documentation License".
  9. This manual contains no Invariant Sections. The Front-Cover Texts are
  10. (a) (see below), and the Back-Cover Texts are (b) (see below).
  11. (a) The FSF's Front-Cover Text is:
  12. A GNU Manual
  13. (b) The FSF's Back-Cover Text is:
  14. You have freedom to copy and modify this GNU Manual, like GNU
  15. software. Copies published by the Free Software Foundation raise
  16. funds for GNU development. -->
  17. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <title>Traditional warnings (The C Preprocessor)</title>
  21. <meta name="description" content="Traditional warnings (The C Preprocessor)">
  22. <meta name="keywords" content="Traditional warnings (The C Preprocessor)">
  23. <meta name="resource-type" content="document">
  24. <meta name="distribution" content="global">
  25. <meta name="Generator" content="makeinfo">
  26. <link href="index.html#Top" rel="start" title="Top">
  27. <link href="Index-of-Directives.html#Index-of-Directives" rel="index" title="Index of Directives">
  28. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  29. <link href="Traditional-Mode.html#Traditional-Mode" rel="up" title="Traditional Mode">
  30. <link href="Implementation-Details.html#Implementation-Details" rel="next" title="Implementation Details">
  31. <link href="Traditional-miscellany.html#Traditional-miscellany" rel="prev" title="Traditional miscellany">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.indentedblock {margin-right: 0em}
  36. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  37. blockquote.smallquotation {font-size: smaller}
  38. div.display {margin-left: 3.2em}
  39. div.example {margin-left: 3.2em}
  40. div.lisp {margin-left: 3.2em}
  41. div.smalldisplay {margin-left: 3.2em}
  42. div.smallexample {margin-left: 3.2em}
  43. div.smalllisp {margin-left: 3.2em}
  44. kbd {font-style: oblique}
  45. pre.display {font-family: inherit}
  46. pre.format {font-family: inherit}
  47. pre.menu-comment {font-family: serif}
  48. pre.menu-preformatted {font-family: serif}
  49. pre.smalldisplay {font-family: inherit; font-size: smaller}
  50. pre.smallexample {font-size: smaller}
  51. pre.smallformat {font-family: inherit; font-size: smaller}
  52. pre.smalllisp {font-size: smaller}
  53. span.nolinebreak {white-space: nowrap}
  54. span.roman {font-family: initial; font-weight: normal}
  55. span.sansserif {font-family: sans-serif; font-weight: normal}
  56. ul.no-bullet {list-style: none}
  57. -->
  58. </style>
  59. </head>
  60. <body lang="en">
  61. <a name="Traditional-warnings"></a>
  62. <div class="header">
  63. <p>
  64. Previous: <a href="Traditional-miscellany.html#Traditional-miscellany" accesskey="p" rel="prev">Traditional miscellany</a>, Up: <a href="Traditional-Mode.html#Traditional-Mode" accesskey="u" rel="up">Traditional Mode</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html#Index-of-Directives" title="Index" rel="index">Index</a>]</p>
  65. </div>
  66. <hr>
  67. <a name="Traditional-warnings-1"></a>
  68. <h3 class="section">10.4 Traditional warnings</h3>
  69. <p>You can request warnings about features that did not exist, or worked
  70. differently, in traditional C with the <samp>-Wtraditional</samp> option.
  71. GCC does not warn about features of ISO C which you must use when you
  72. are using a conforming compiler, such as the &lsquo;<samp>#</samp>&rsquo; and &lsquo;<samp>##</samp>&rsquo;
  73. operators.
  74. </p>
  75. <p>Presently <samp>-Wtraditional</samp> warns about:
  76. </p>
  77. <ul>
  78. <li> Macro parameters that appear within string literals in the macro body.
  79. In traditional C macro replacement takes place within string literals,
  80. but does not in ISO C.
  81. </li><li> In traditional C, some preprocessor directives did not exist.
  82. Traditional preprocessors would only consider a line to be a directive
  83. if the &lsquo;<samp>#</samp>&rsquo; appeared in column 1 on the line. Therefore
  84. <samp>-Wtraditional</samp> warns about directives that traditional C
  85. understands but would ignore because the &lsquo;<samp>#</samp>&rsquo; does not appear as the
  86. first character on the line. It also suggests you hide directives like
  87. &lsquo;<samp>#pragma</samp>&rsquo; not understood by traditional C by indenting them. Some
  88. traditional implementations would not recognize &lsquo;<samp>#elif</samp>&rsquo;, so it
  89. suggests avoiding it altogether.
  90. </li><li> A function-like macro that appears without an argument list. In some
  91. traditional preprocessors this was an error. In ISO C it merely means
  92. that the macro is not expanded.
  93. </li><li> The unary plus operator. This did not exist in traditional C.
  94. </li><li> The &lsquo;<samp>U</samp>&rsquo; and &lsquo;<samp>LL</samp>&rsquo; integer constant suffixes, which were not
  95. available in traditional C. (Traditional C does support the &lsquo;<samp>L</samp>&rsquo;
  96. suffix for simple long integer constants.) You are not warned about
  97. uses of these suffixes in macros defined in system headers. For
  98. instance, <code>UINT_MAX</code> may well be defined as <code>4294967295U</code>, but
  99. you will not be warned if you use <code>UINT_MAX</code>.
  100. <p>You can usually avoid the warning, and the related warning about
  101. constants which are so large that they are unsigned, by writing the
  102. integer constant in question in hexadecimal, with no U suffix. Take
  103. care, though, because this gives the wrong result in exotic cases.
  104. </p></li></ul>
  105. <hr>
  106. <div class="header">
  107. <p>
  108. Previous: <a href="Traditional-miscellany.html#Traditional-miscellany" accesskey="p" rel="prev">Traditional miscellany</a>, Up: <a href="Traditional-Mode.html#Traditional-Mode" accesskey="u" rel="up">Traditional Mode</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html#Index-of-Directives" title="Index" rel="index">Index</a>]</p>
  109. </div>
  110. </body>
  111. </html>