Files
hustoj/web/cppreference-zh/chmhelp/c-language-inline.html
2025-08-01 12:57:54 +08:00

143 lines
14 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>inline &#20989;&#25968;&#35828;&#26126;&#31526;</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_inline skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading"><code>inline</code> &#20989;&#25968;&#35828;&#26126;&#31526;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="c.html">c</a>&lrm; | <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>&#22768;&#26126;<a href="https://en.wikipedia.org/wiki/inline_function" class="extiw" title="enwiki:inline function">&#20869;&#32852;&#20989;&#25968;</a>&#12290;</p>
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">&#35821;&#27861;</span></h3>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><span class="t-c"><span class="mw-geshi c source-c"><span class="kw1">inline</span></span></span> <span class="t-spar">&#20989;&#25968;&#22768;&#26126;</span></td>
<td class="t-sdsc-nopad"></td>
<td><span class="t-mark-rev t-since-c99">(C99 &#36215;)</span></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<p><code><b>inline</b></code> &#35828;&#26126;&#31526;&#30340;&#30446;&#30340;&#26159;&#25552;&#31034;&#32534;&#35793;&#22120;&#20570;&#20248;&#21270;&#65292;&#35692;&#22914;<a href="https://en.wikipedia.org/wiki/inline_expansion" class="extiw" title="enwiki:inline expansion">&#20989;&#25968;&#20869;&#32852;</a>&#65292;&#36825;&#36890;&#24120;&#35201;&#27714;&#32534;&#35793;&#26041;&#33021;&#35265;&#21040;&#20989;&#25968;&#30340;&#23450;&#20041;&#12290;&#32534;&#35793;&#22120;&#33021;&#65288;&#24182;&#19988;&#32463;&#24120;&#65289;&#23601;&#20248;&#21270;&#30340;&#30446;&#30340;&#24573;&#30053; <code>inline</code> &#35828;&#26126;&#31526;&#30340;&#23384;&#22312;&#19982;&#21542;&#12290;</p>
<p>&#33509;&#32534;&#35793;&#22120;&#36827;&#34892;&#20989;&#25968;&#20869;&#32852;&#65292;&#21017;&#23427;&#20250;&#20197;&#20989;&#25968;&#20307;&#21462;&#20195;&#25152;&#26377;&#23545;&#23427;&#30340;&#35843;&#29992;&#65292;&#20197;&#36991;&#20813;&#20989;&#25968;&#35843;&#29992;&#30340;&#24320;&#38144;&#65288;&#23558;&#25968;&#25454;&#32622;&#20110;&#26632;&#19978;&#21644;&#21462;&#24471;&#32467;&#26524;&#65289;&#65292;&#36825;&#21487;&#33021;&#20250;&#29983;&#25104;&#26356;&#22823;&#30340;&#21487;&#25191;&#34892;&#25991;&#20214;&#65292;&#22240;&#20026;&#20989;&#25968;&#21487;&#33021;&#20250;&#34987;&#37325;&#22797;&#22810;&#27425;&#12290;&#32467;&#26524;&#21516;<a href="c-preprocessor-replace.html">&#20223;&#20989;&#25968;&#23439;</a>&#65292;&#21482;&#26159;&#29992;&#20110;&#35813;&#20989;&#25968;&#30340;&#26631;&#35782;&#31526;&#21644;&#23439;&#25351;&#20195;&#21487;&#35265;&#20110;&#23450;&#20041;&#28857;&#30340;&#23450;&#20041;&#65292;&#32780;&#19981;&#25351;&#20195;&#35843;&#29992;&#28857;&#30340;&#23450;&#20041;&#12290;</p>
<p>&#19981;&#31649;&#26159;&#21542;&#36827;&#34892;&#20869;&#32852;&#65292;&#20869;&#32852;&#20989;&#25968;&#37117;&#20445;&#35777;&#19979;&#21015;&#35821;&#20041;&#65306;</p>
<p>&#20219;&#20309;&#25317;&#26377;&#20869;&#37096;&#38142;&#25509;&#30340;&#20989;&#25968;&#37117;&#21487;&#20197;&#22768;&#26126;&#25104; <code>static inline</code> &#65292;&#27809;&#26377;&#20854;&#20182;&#38480;&#21046;&#12290;</p>
<p>&#19968;&#20010;&#38750; static &#30340;&#20869;&#32852;&#20989;&#25968;&#19981;&#33021;&#23450;&#20041;&#19968;&#20010;&#38750; const &#30340;&#20989;&#25968;&#23616;&#37096; static &#23545;&#35937;&#65292;&#24182;&#19988;&#19981;&#33021;&#20351;&#29992;&#25991;&#20214;&#20316;&#29992;&#22495;&#30340; static &#23545;&#35937;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="kw4">static</span> <span class="kw4">int</span> x<span class="sy4">;</span>
<span class="kw1">inline</span> <span class="kw4">void</span> f<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw4">static</span> <span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#38750; const &#30340; static &#23545;&#35937;&#22312;&#38750; static &#30340; inline &#20989;&#25968;&#20013;</span>
<span class="kw4">int</span> k <span class="sy1">=</span> x<span class="sy4">;</span> <span class="co1">// &#38169;&#35823;&#65306;&#38750; static &#30340; inline &#20989;&#25968;&#35775;&#38382; static &#21464;&#37327;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#33509;&#38750; static &#20989;&#25968;&#22768;&#26126;&#20026; <code>inline</code> &#65292;&#21017;&#24517;&#39035;&#22312;&#21516;&#19968;&#32763;&#35793;&#21333;&#20803;&#20013;&#23450;&#20041;&#23427;&#12290;&#19981;&#20351;&#29992; <code>extern</code> &#30340;&#20869;&#32852;&#23450;&#20041;&#19981;&#20250;&#23545;&#22806;&#37096;&#21487;&#35265;&#65292;&#32780;&#19988;&#19981;&#20250;&#38459;&#27490;&#20854;&#20182;&#32763;&#35793;&#21333;&#20803;&#23450;&#20041;&#21516;&#19968;&#20989;&#25968;&#12290;&#36825;&#20351;&#24471; <code><b>inline</b></code> &#20851;&#38190;&#35789;&#25104;&#20102; <code>static</code> &#22806;&#21478;&#19968;&#31181;&#22312;&#22836;&#25991;&#20214;&#23450;&#20041;&#20989;&#25968;&#30340;&#26041;&#24335;&#65292;&#21487;&#20197;&#30001;&#21516;&#19968;&#31243;&#24207;&#30340;&#22810;&#20010;&#32763;&#35793;&#21333;&#20803;&#21253;&#21547;&#35813;&#22836;&#25991;&#20214;&#12290;</p>
<p>&#33509;&#20989;&#25968;&#22312;&#19968;&#20123;&#32763;&#35793;&#21333;&#20803;&#20013;&#22768;&#26126;&#20026; <code>inline</code> &#65292;&#23427;&#23601;&#19981;&#38656;&#35201;&#22312;&#22788;&#22788;&#30342;&#22768;&#26126;&#20026; <code>inline</code> &#65306;&#33267;&#22810;&#19968;&#20010;&#21333;&#20803;&#20250;&#25552;&#20379;&#24120;&#35268;&#30340;&#38750; inline &#38750; static &#20989;&#25968;&#65292;&#25110;&#26159;&#22768;&#26126;&#20026; <code>extern inline</code> &#30340;&#20989;&#25968;&#12290;&#31216;&#27492;&#32763;&#35793;&#21333;&#20803;&#25552;&#20379;<i>&#22806;&#37096;&#23450;&#20041;</i>&#12290;&#20026;&#36991;&#20813;&#26410;&#23450;&#20041;&#34892;&#20026;&#65292;&#33509;&#22312;&#34920;&#36798;&#24335;&#20013;&#20351;&#29992;&#25317;&#26377;&#22806;&#37096;&#38142;&#25509;&#30340;&#20989;&#25968;&#21517;&#65292;&#21017;&#31243;&#24207;&#20013;&#24517;&#39035;&#23384;&#22312;&#19968;&#20010;&#22806;&#37096;&#23450;&#20041;&#65292;&#35265;<a href="c-language-extern.html#.E4.B8.80.E4.B8.AA.E5.AE.9A.E4.B9.89.E8.A7.84.E5.88.99">&#19968;&#20010;&#23450;&#20041;&#35268;&#21017;</a>&#12290;</p>
<p>&#20869;&#32852;&#20989;&#25968;&#30340;&#22320;&#22336;&#22987;&#32456;&#26159;&#22806;&#37096;&#23450;&#20041;&#30340;&#22320;&#22336;&#65292;&#20294;&#24403;&#20197;&#27492;&#22320;&#22336;&#36827;&#34892;&#20989;&#25968;&#35843;&#29992;&#26102;&#65292;&#35843;&#29992;<i>&#20869;&#32852;&#23450;&#20041;</i>&#65288;&#33509;&#23384;&#22312;&#20110;&#32763;&#35793;&#21333;&#20803;&#20013;&#65289;&#36824;&#26159;<i>&#22806;&#37096;&#23450;&#20041;</i>&#26159;&#26410;&#25351;&#23450;&#30340;&#12290;&#23450;&#20041;&#20110;&#20869;&#32852;&#23450;&#20041;&#20013;&#30340; static &#23545;&#35937;&#19982;&#23450;&#20041;&#20110;&#22806;&#37096;&#23450;&#20041;&#20013;&#30340; static &#23545;&#35937;&#26377;&#21035;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="kw1">inline</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>saddr<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span> <span class="co1">// &#29992;&#20110;&#27492;&#25991;&#20214;&#20869;&#30340;&#20869;&#32852;&#23450;&#20041;</span>
<span class="br0">{</span>
<span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> name<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="st0">&quot;saddr&quot;</span><span class="sy4">;</span>
<span class="kw1">return</span> name<span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">int</span> compare_name<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw1">return</span> saddr<span class="br0">(</span><span class="br0">)</span> <span class="sy1">==</span> saddr<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#26410;&#25351;&#23450;&#34892;&#20026;&#65292;&#35843;&#29992;&#21487;&#33021;&#26159;&#22806;&#37096;&#30340;</span>
<span class="br0">}</span>
<span class="kw2">extern</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>saddr<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#22806;&#37096;&#23450;&#20041;&#20063;&#20250;&#29983;&#25104;</span></pre></div>
</div>
<p>C &#31243;&#24207;&#19981;&#24212;&#20381;&#36182;&#20110;&#35843;&#29992;&#20989;&#25968;&#30340;&#20869;&#32852;&#29256;&#26412;&#36824;&#26159;&#22806;&#37096;&#29256;&#26412;&#65292;&#21542;&#21017;&#34892;&#20026;&#26410;&#25351;&#23450;&#12290;</p>
<h3><span class="mw-headline" id=".E5.85.B3.E9.94.AE.E8.AF.8D">&#20851;&#38190;&#35789;</span></h3>
<p><a href="c-keyword-inline.html"><tt>inline</tt></a></p>
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">&#27880;&#35299;</span></h3>
<p><code>inline</code> &#20851;&#38190;&#35789;&#26159;&#20174; C++ &#21560;&#25910;&#30340;&#65292;&#20294;&#22312; C++ &#20013;&#65292;&#33509;&#20989;&#25968;&#22768;&#26126;&#20026;&#20869;&#32852;&#65292;&#21017;&#23427;&#24517;&#39035;&#22312;&#27599;&#19968;&#20010;&#32763;&#35793;&#21333;&#20803;&#22768;&#26126;&#20026;&#20869;&#32852;&#65292;&#32780;&#19988;&#27599;&#19968;&#20010;&#20869;&#32852;&#20989;&#25968;&#37117;&#24517;&#39035;&#26377;&#20934;&#30830;&#30456;&#21516;&#30340;&#23450;&#20041;&#65288; C &#20013;&#65292;&#23450;&#20041;&#21487;&#20197;&#30456;&#24322;&#65292;&#32780;&#20381;&#36182;&#36825;&#20123;&#24046;&#24322;&#20165;&#23548;&#33268;&#26410;&#25351;&#23450;&#34892;&#20026;&#65289;&#12290;&#21478;&#19968;&#26041;&#38754;&#65292; C++ &#20801;&#35768;&#38750; const &#30340;&#20989;&#25968;&#23616;&#22495; static &#23545;&#35937;&#65292;&#32780;&#19988;&#25152;&#26377;&#26469;&#33258;&#19968;&#20010;&#20869;&#32852;&#20989;&#25968;&#19981;&#21516;&#23450;&#20041;&#29256;&#26412;&#30340;&#20989;&#25968;&#23616;&#37096; static &#23545;&#35937;&#37117;&#30456;&#21516;&#65292;&#20294;&#23427;&#20204;&#22312; C &#20013;&#19981;&#21516;&#12290;</p>
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">&#31034;&#20363;</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="co1">// file test.h</span>
<span class="co2">#ifndef TEST_H_INCLUDED</span>
<span class="co2">#define TEST_H_INCLUDED</span>
<span class="kw1">inline</span> <span class="kw4">int</span> sum <span class="br0">(</span><span class="kw4">int</span> a, <span class="kw4">int</span> b<span class="br0">)</span>
<span class="br0">{</span>
<span class="kw1">return</span> a<span class="sy2">+</span>b<span class="sy4">;</span>
<span class="br0">}</span>
<span class="co2">#endif</span>
<span class="co1">// &#25991;&#20214; sum.c</span>
<span class="co2">#include &quot;test.h&quot;</span>
<span class="kw2">extern</span> <span class="kw1">inline</span> <span class="kw4">int</span> sum <span class="br0">(</span><span class="kw4">int</span> a, <span class="kw4">int</span> b<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#25552;&#20379;&#22806;&#37096;&#23450;&#20041;</span>
<span class="co1">// &#25991;&#20214; test1.c</span>
<span class="co2">#include &lt;stdio.h&gt;</span>
<span class="co2">#include &quot;test.h&quot;</span>
<span class="kw2">extern</span> <span class="kw4">int</span> f<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
<span class="br0">{</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;%d<span class="es1">\n</span>&quot;</span>, sum<span class="br0">(</span><span class="nu0">1</span>, <span class="nu0">2</span><span class="br0">)</span> <span class="sy2">+</span> f<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="co1">// &#25991;&#20214; test2.c</span>
<span class="co2">#include &quot;test.h&quot;</span>
<span class="kw4">int</span> f<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw1">return</span> sum<span class="br0">(</span><span class="nu0">2</span>, <span class="nu0">3</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">8</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">&#24341;&#29992;</span></h3>
<div class="t-ref-std-11">
<ul>
<li>C11 &#26631;&#20934;&#65288;ISO/IEC 9899:2011&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>6.7.4 Function specifiers (p: 125-127)</li>
</ul>
</dd>
</dl>
<div class="t-ref-std-c99">
<ul>
<li>C99 &#26631;&#20934;&#65288;ISO/IEC 9899:1999&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>6.7.4 Function specifiers (p: 112-113)</li>
</ul>
</dd>
</dl>
</div>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin"></table>
</div>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>