187 lines
13 KiB
HTML
187 lines
13 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
|
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>注释</title>
|
|
<link rel="stylesheet" href="ext.css" />
|
|
<link rel="stylesheet" href="site_modules.css" />
|
|
</head>
|
|
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_comment skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading">注释</h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p>注释的作用是一套代码内文档。插入注释到程序中时,编译器直接忽略它们;它们只是有意地被人类用作读取源码的笔记。</p>
|
|
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">语法</span></h3>
|
|
<table class="t-sdsc-begin">
|
|
<tr>
|
|
<td colspan="10" class="t-sdsc-sep"></td>
|
|
</tr>
|
|
<tr class="t-sdsc">
|
|
<td><code><b>/*</b></code> <span class="t-spar">注释</span> <code><b>*/</b></code></td>
|
|
<td>(1)</td>
|
|
<td class="t-sdsc-nopad"></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="10" class="t-sdsc-sep"></td>
|
|
</tr>
|
|
<tr class="t-sdsc">
|
|
<td><code><b>//</b></code> <span class="t-spar">注释</span>\n</td>
|
|
<td>(2)</td>
|
|
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="10" class="t-sdsc-sep"></td>
|
|
</tr>
|
|
</table>
|
|
<div class="t-li1"><span class="t-li">1)</span> 通称为“ C 风格”或“多行”注释。</div>
|
|
<div class="t-li1"><span class="t-li">2)</span> 通称为“ C++ 风格”或“单行”注释。</div>
|
|
<p>在<a href="c-language-translation_phases.html">翻译阶段 3</a>,通过把每段注释替换为单个空白字符,将所有注释从程序中移除。</p>
|
|
<h3><span class="mw-headline" id="C_.E9.A3.8E.E6.A0.BC">C 风格</span></h3>
|
|
<p>C 风格注释通常用于注释大块文本或小片代码;然而,能用它们注释单行。可以简单地以 <code>/*</code> 和 <code>*/</code> 环绕文本,将文本作为 C 风格注释插入。 C 风格注释告诉编译器忽略 <code>/*</code> 和 <code>*/</code> 间的所有内容。尽管不是 C 标准的一部分, <code>/**</code> 和 <code>*/</code> 常用于指示文档块;这是合法的,因为星号被简单地当做注释的一部分。</p>
|
|
<p>除了在<a href="c-language-character_constant.html">字符常量</a>、<a href="c-language-string_literal.html">字符串字面量</a>或注释中,字符 <code>/*</code> 引入一段注释。检验这种注释的内容仅是为了鉴别多字节字符,以及寻找终止注释的 <code>*/</code> 。 C 风格注释不能嵌套。</p>
|
|
<table class="t-rev-begin">
|
|
<tr class="t-rev t-since-c99">
|
|
<td>
|
|
<h3><span class="mw-headline" id="C.2B.2B_.E9.A3.8E.E6.A0.BC">C++ 风格</span></h3>
|
|
<p>C++ 风格注释通常用于注释单行文本或代码;然而,能将它们放在一起组成多行注释。可以简单地将 <code>//</code> 置于文本前,文本后跟随换行符,以将文本作为 C++ 风格注释插入。 C++ 风格注释告诉编译器忽略 <code>//</code> 和换行符间的所有内容。</p>
|
|
<p>除了在<a href="c-language-character_constant.html">字符常量</a>、<a href="c-language-string_literal.html">字符串字面量</a>或注释中,字符 <code>//</code> 引入一段注释,它包含所有多字节字符,直至但不包含下个换行符。检验这种注释的内容仅是为了鉴别多字节字符,以及寻找终止注释的换行符。 C++ 风格注释能嵌套:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="co1">// y = f(x); // 调用算法</span></pre></div>
|
|
</div>
|
|
<p>C 风格注释可出现在 C++ 风格注释内:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="co1">// y = f(x); /* 调用算法 */</span></pre></div>
|
|
</div>
|
|
<p>C++ 风格注释可出现在 C 风格注释内;这是排除一小块源代码的机制:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="coMULTI">/*
|
|
y = f(x); // 调用算法
|
|
z = g(x);
|
|
*/</span></pre></div>
|
|
</div>
|
|
<p><br /></p>
|
|
</td>
|
|
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
|
<p>因为注释在预处理器阶段前<a href="c-language-translation_phases.html">被移除</a>,宏不能用于组成注释,而不终止的 C 风格注释不会从被 #include 的文件中漏出。</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="coMULTI">/* 试图用宏组成注释。 */</span>
|
|
<span class="coMULTI">/* 但空格替换字符 "//" 。 */</span>
|
|
<span class="co2">#ifndef DEBUG</span>
|
|
<span class="co2">#define PRINTF //</span>
|
|
<span class="co2">#else</span>
|
|
<span class="co2">#define PRINTF printf</span>
|
|
<span class="co2">#endif</span>
|
|
...
|
|
<span class="me1">PRINTF</span><span class="br0">(</span><span class="st0">"Error in file %s at line %i<span class="es1">\n</span>"</span>, __FILE__, __LINE__<span class="br0">)</span><span class="sy4">;</span></pre></div>
|
|
</div>
|
|
<p>除了注释掉,用于排除源码的其他机制是:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="co2">#if 0</span>
|
|
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"this will not be compiled"</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="coMULTI">/* 与 C 风格注释不冲突 */</span>
|
|
<span class="co1">// 与 C++ 风格注释不冲突</span>
|
|
<span class="co2">#endif</span></pre></div>
|
|
</div>
|
|
<p>和</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw1">if</span><span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span>
|
|
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"this will be compiled but not be executed"</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="coMULTI">/* 与 C 风格注释不冲突 */</span>
|
|
<span class="co1">// 与 C++ 风格注释不冲突</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<p>C99 中引入 // 注释,在一些罕有场合是破坏性更改:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1">a <span class="sy1">=</span> b <span class="co1">//*除数:*/ c</span>
|
|
<span class="sy2">+</span> d<span class="sy4">;</span> <span class="coMULTI">/* C89 编译为 a = b / c + d;
|
|
C99 编译为 a = b + d; */</span></pre></div>
|
|
</div>
|
|
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
|
<div class="t-example">
|
|
<div class="t-example-live-link"></div>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="coMULTI">/*
|
|
C 风格注释
|
|
能含有多行。
|
|
*/</span>
|
|
|
|
<span class="coMULTI">/* 或仅一行。 */</span>
|
|
|
|
<span class="co1">// C++ 风格注释能注释一行。</span>
|
|
|
|
<span class="co1">// 或者,能将</span>
|
|
<span class="co1">// 它们串在一起。</span>
|
|
<span class="co2">#include <stdio.h></span>
|
|
|
|
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
|
<span class="br0">{</span>
|
|
<span class="co1">// 将不运行下方代码</span>
|
|
<span class="co1">// puts("Hello");</span>
|
|
|
|
<span class="co1">// 将运行下方代码</span>
|
|
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"Hello"</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
</div>
|
|
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
|
<div class="t-ref-std-11">
|
|
<ul>
|
|
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>6.4.9 Comments (p: 75)</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<div class="t-ref-std-c99">
|
|
<ul>
|
|
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>6.4.9 Comments (p: 66)</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<div class="t-ref-std-c89">
|
|
<ul>
|
|
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>3.1.9 Comments</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
|
<table class="t-dsc-begin"></table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|