⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 traditional-warnings.html

📁 gcc手册
💻 HTML
字号:
<html lang="en">

<head>

<title>The C Preprocessor</title>

<meta http-equiv="Content-Type" content="text/html">

<meta name="description" content="The C Preprocessor">

<meta name="generator" content="makeinfo 4.3">

<link href="http://www.gnu.org/software/texinfo/" rel="generator-home">

<!--

Copyright &copy; 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,

1997, 1998, 1999, 2000, 2001, 2002, 2003

Free Software Foundation, Inc.



   <p>Permission is granted to copy, distribute and/or modify this document

under the terms of the GNU Free Documentation License, Version 1.1 or

any later version published by the Free Software Foundation.  A copy of

the license is included in the

section entitled "GNU Free Documentation License".



   <p>This manual contains no Invariant Sections.  The Front-Cover Texts are

(a) (see below), and the Back-Cover Texts are (b) (see below).



   <p>(a) The FSF's Front-Cover Text is:



   <p>A GNU Manual



   <p>(b) The FSF's Back-Cover Text is:



   <p>You have freedom to copy and modify this GNU Manual, like GNU

     software.  Copies published by the Free Software Foundation raise

     funds for GNU development. 

-->

</head>

<body>

<div class="node">

<p>

Node:<a name="Traditional%20warnings">Traditional warnings</a>,

Previous:<a rel="previous" accesskey="p" href="Traditional-miscellany.html#Traditional%20miscellany">Traditional miscellany</a>,

Up:<a rel="up" accesskey="u" href="Traditional-Mode.html#Traditional%20Mode">Traditional Mode</a>

<hr><br>

</div>



<h3 class="section">Traditional warnings</h3>



   <p>You can request warnings about features that did not exist, or worked

differently, in traditional C with the <code>-Wtraditional</code> option. 

GCC does not warn about features of ISO C which you must use when you

are using a conforming compiler, such as the <code>#</code> and <code>##</code>

operators.



   <p>Presently <code>-Wtraditional</code> warns about:



     <ul>

<li>Macro parameters that appear within string literals in the macro body. 

In traditional C macro replacement takes place within string literals,

but does not in ISO C.



     <li>In traditional C, some preprocessor directives did not exist. 

Traditional preprocessors would only consider a line to be a directive

if the <code>#</code> appeared in column 1 on the line.  Therefore

<code>-Wtraditional</code> warns about directives that traditional C

understands but would ignore because the <code>#</code> does not appear as the

first character on the line.  It also suggests you hide directives like

<code>#pragma</code> not understood by traditional C by indenting them.  Some

traditional implementations would not recognize <code>#elif</code>, so it

suggests avoiding it altogether.



     <li>A function-like macro that appears without an argument list.  In some

traditional preprocessors this was an error.  In ISO C it merely means

that the macro is not expanded.



     <li>The unary plus operator.  This did not exist in traditional C.



     <li>The <code>U</code> and <code>LL</code> integer constant suffixes, which were not

available in traditional C.  (Traditional C does support the <code>L</code>

suffix for simple long integer constants.)  You are not warned about

uses of these suffixes in macros defined in system headers.  For

instance, <code>UINT_MAX</code> may well be defined as <code>4294967295U</code>, but

you will not be warned if you use <code>UINT_MAX</code>.



     <p>You can usually avoid the warning, and the related warning about

constants which are so large that they are unsigned, by writing the

integer constant in question in hexadecimal, with no U suffix.  Take

care, though, because this gives the wrong result in exotic cases. 

</ul>



   </body></html>



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -