185 lines
11 KiB
HTML
185 lines
11 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_language_conformance 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>‎ | <a href="c-language.html">language</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p><i>遵从性 (conformance)</i> 有三重定义:</p>
|
|
<ul>
|
|
<li><i>严格遵从程序</i> - 仅使用良定义的语言构造,即拥有单一行为的构造。它不包含未指定、未定义或实现定义的行为,且不超过任何最小实现极限。</li>
|
|
<li><i>遵从程序</i> - 可为遵从实现所接受。</li>
|
|
<li><i>遵从实现</i> -
|
|
<ul>
|
|
<li>遵从的有宿主实现应当接受任何严格遵从程序。</li>
|
|
<li>遵从的自立实现应当接受任何将库章(第 7 章)中指定的库特性限制到自立的标准库头文件(见后述)的内容的严格遵从程序。</li>
|
|
<li>遵从实现可拥有扩展(包括额外的库函数),只要它们不改变任何严格遵从程序的行为。</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">解释</span></h3>
|
|
<p>标准不在翻译单元上定义任何最小实现极限。有宿主环境拥有操作系统;自立环境无操作系统。运行于有宿主环境中的程序可使用任何库章节(第 7 章)中描述的特性;运行于自立环境中的程序可使用第 4 章所要求的库特性子集。</p>
|
|
<h4><span class="mw-headline" id=".E8.87.AA.E7.AB.8B.E7.9A.84.E6.A0.87.E5.87.86.E5.BA.93.E5.A4.B4.E6.96.87.E4.BB.B6">自立的标准库头文件</span></h4>
|
|
<p>每个完全自立的标准库头文件中的所有标准库特性均要求为自立实现所提供。</p>
|
|
<table class="t-rev-begin">
|
|
<tr class="t-rev t-since-c23">
|
|
<td>
|
|
<p>有些头文件是条件性自立的。</p>
|
|
<ul>
|
|
<li>若实现预定义宏 <code>__STDC_IEC_60559_BFP__</code> 或 <code>__STDC_IEC_60559_BFP__</code> ,则
|
|
<ul>
|
|
<li><code><math.h></code> 与 <code><fenv.h></code> 为完全自立的头文件,而</li>
|
|
<li><code><stdlib.h></code> 为部分自立的头文件。</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>在部分自立的头文件中,仅一部分标准库特性要求为自立实现所提供。</p>
|
|
<ul>
|
|
<li>不要求自立实现提供 <a href="c-string-byte-strdup.html"><tt>strdup</tt></a>、 <a href="c-string-byte-strndup.html"><tt>strndup</tt></a>、 <span class="t-lc"><a href="c-string-byte-strcoll.html">strcoll</a></span>、 <span class="t-lc"><a href="c-string-byte-strxfrm.html">strxfrm</a></span> 及 <span class="t-lc"><a href="c-string-byte-strerror.html">strerror</a></span> 。</li>
|
|
<li>在预定义 <code>__STDC_IEC_60559_BFP__</code> 或 <code>__STDC_IEC_60559_BFP__</code> 时,在 <code><stdlib.h></code> 中仅要求自立实现提供数值转换函数( <code>ato<i>X</i></code>、 <code>strto<i>X</i></code> 及 <code>strfrom<i>X</i></code> )。</li>
|
|
</ul>
|
|
</td>
|
|
<td><span class="t-mark-rev t-since-c23">(C23 起)</span></td>
|
|
</tr>
|
|
</table>
|
|
<table class="t-dsc-begin">
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E5.AE.8C.E5.85.A8.E8.87.AA.E7.AB.8B.E7.9A.84.E6.A0.87.E5.87.86.E5.BA.93.E5.A4.B4.E6.96.87.E4.BB.B6">完全自立的标准库头文件</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><float.h></b></code></td>
|
|
<td><a href="c-types-limits.html">浮点类型的极限</a></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><limits.h></b></code></td>
|
|
<td><a href="c-types-limits.html">整数类型的范围</a></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><iso646.h></b></code> <span class="t-mark-rev t-since-c95">(C95)</span></td>
|
|
<td><a href="c-language-operator_alternative.html">符号的替代写法</a></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><stdalign.h></b></code> <span class="t-mark-rev t-since-c11">(C11)</span></td>
|
|
<td><a href="c-types.html"><code>alignas</code> 与 <code>alignof</code></a> 便利宏</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><stdarg.h></b></code></td>
|
|
<td><a href="c-variadic.html">可变参数</a></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><stdbool.h></b></code> <span class="t-mark-rev t-since-c99">(C99)</span></td>
|
|
<td><a href="c-types.html">布尔类型的宏</a></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><stddef.h></b></code></td>
|
|
<td><a href="c-types.html">常用宏定义</a></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><stdint.h></b></code> <span class="t-mark-rev t-since-c99">(C99)</span></td>
|
|
<td><a href="c-types-integer.html">定宽整数类型</a></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><stdnoreturn.h></b></code> <span class="t-mark-rev t-since-c11">(C11)</span></td>
|
|
<td><a href="c-types.html"><tt>noreturn</tt></a> 便利宏</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E9.83.A8.E5.88.86.E8.87.AA.E7.AB.8B.E7.9A.84.E6.A0.87.E5.87.86.E5.BA.93.E5.A4.B4.E6.96.87.E4.BB.B6">部分自立的标准库头文件</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><string.h></b></code> <span class="t-mark-rev t-since-c23">(C23)</span></td>
|
|
<td><a href="c-string-byte.html">字符串处理</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E6.9D.A1.E4.BB.B6.E6.80.A7.E5.AE.8C.E5.85.A8.E8.87.AA.E7.AB.8B.E7.9A.84.E6.A0.87.E5.87.86.E5.BA.93.E5.A4.B4.E6.96.87.E4.BB.B6">条件性完全自立的标准库头文件</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><fenv.h></b></code> <span class="t-mark-rev t-since-c23">(C23)</span></td>
|
|
<td><a href="c-numeric-fenv.html">浮点环境</a></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><math.h></b></code> <span class="t-mark-rev t-since-c23">(C23)</span></td>
|
|
<td><a href="c-numeric-math.html">常用数学函数</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E6.9D.A1.E4.BB.B6.E6.80.A7.E9.83.A8.E5.88.86.E8.87.AA.E7.AB.8B.E7.9A.84.E6.A0.87.E5.87.86.E5.BA.93.E5.A4.B4.E6.96.87.E4.BB.B6">条件性部分自立的标准库头文件</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td><code><b><stdlib.h></b></code> <span class="t-mark-rev t-since-c23">(C23)</span></td>
|
|
<td>基础工具:<a href="c-memory.html">内存管理</a>、<a href="c-program.html">程序工具</a>、<a href="c-string.html">字符串转换</a>、<a href="c-numeric-random.html">随机数</a>、<a href="c-algorithm.html">算法</a></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
|
<div class="t-ref-std-17">
|
|
<ul>
|
|
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>4 Conformance (p: 4)</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="t-ref-std-11">
|
|
<ul>
|
|
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>4 Conformance (p: 8-9)</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="t-ref-std-c99">
|
|
<ul>
|
|
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>4 Conformance (p: 7-8)</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="t-ref-std-c89">
|
|
<ul>
|
|
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>1.7 Compliance</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 class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|