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

416 lines
36 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>&#27169;&#22359; (C++20 &#36215;)</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-cpp_language_modules skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#27169;&#22359; <span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#22823;&#22810;&#25968; C++ &#39033;&#30446;&#29992;&#21040;&#20102;&#22810;&#20010;&#32763;&#35793;&#21333;&#20803;&#65292;&#22240;&#27492;&#23427;&#20204;&#38656;&#35201;&#22312;&#37027;&#20123;&#21333;&#20803;&#38388;&#20998;&#20139;<a href="cpp-language-declarations.html">&#22768;&#26126;</a>&#21644;<a href="cpp-language-definition.html">&#23450;&#20041;</a>&#12290;&#27491;&#26159;&#22240;&#20026;&#36825;&#26679;&#65292;&#20351;&#29992;&#22836;&#25991;&#20214;&#38750;&#24120;&#37325;&#35201;&#65292;&#20363;&#22914;&#26631;&#20934;&#24211;&#30340;&#22768;&#26126;&#36890;&#36807; <a href="cpp-preprocessor-include.html"><tt>#include</tt></a> &#23545;&#24212;&#30340;&#22836;&#25552;&#20379;&#12290;</p>
<p>&#27169;&#22359;&#26159;&#19968;&#20010;&#29992;&#20110;&#22312;&#32763;&#35793;&#21333;&#20803;&#38388;&#20998;&#20139;&#22768;&#26126;&#21644;&#23450;&#20041;&#30340;&#35821;&#35328;&#29305;&#24615;&#12290;&#23427;&#20204;&#21487;&#20197;&#22312;&#26576;&#20123;&#22320;&#26041;&#26367;&#20195;&#20351;&#29992;&#22836;&#25991;&#20214;&#12290;</p>
<p>&#27169;&#22359;&#21644;<a href="cpp-language-namespace.html">&#21629;&#21517;&#31354;&#38388;</a>&#26159;&#27491;&#20132;&#30340;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">// helloworld.cpp</span>
export module helloworld<span class="sy4">;</span> <span class="co1">// &#27169;&#22359;&#22768;&#26126;</span>
import <span class="sy1">&lt;</span>iostream<span class="sy1">&gt;</span><span class="sy4">;</span> <span class="co1">// &#23548;&#20837;&#22768;&#26126;</span>
export <span class="kw4">void</span> hello<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// &#23548;&#20986;&#22768;&#26126;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;Hello world!<span class="es1">\n</span>&quot;</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">// main.cpp</span>
import helloworld<span class="sy4">;</span> <span class="co1">// &#23548;&#20837;&#22768;&#26126;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
hello<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<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><code><b>export</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>module</b></code> <span class="t-spar">&#27169;&#22359;&#21517;</span> <span class="t-spar">&#27169;&#22359;&#20998;&#21306;</span><span class="t-mark">(&#21487;&#36873;)</span> <span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</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>export</b></code> <span class="t-spar">&#22768;&#26126;</span></td>
<td>(2)</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>export</b></code> <code><b>{</b></code> <span class="t-spar">&#22768;&#26126;&#24207;&#21015;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>}</b></code></td>
<td>(3)</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>export</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>import</b></code> <span class="t-spar">&#27169;&#22359;&#21517;</span> <span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>;</b></code></td>
<td>(4)</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>export</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>import</b></code> <span class="t-spar">&#27169;&#22359;&#20998;&#21306;</span> <span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>;</b></code></td>
<td>(5)</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>export</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>import</b></code> <span class="t-spar">&#22836;&#21517;</span> <span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>;</b></code></td>
<td>(6)</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>module</b></code> <code><b>;</b></code></td>
<td>(7)</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>module&nbsp;: private</b></code> <code><b>;</b></code></td>
<td>(8)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<div class="t-li1"><span class="t-li">1)</span> &#27169;&#22359;&#22768;&#26126;&#12290;&#22768;&#26126;&#24403;&#21069;&#32763;&#35793;&#21333;&#20803;&#26159;&#19968;&#20010;<i>&#27169;&#22359;&#21333;&#20803;</i>&#12290;</div>
<div class="t-li1"><span class="t-li">2,3)</span> &#23548;&#20986;&#22768;&#26126;&#12290;&#23548;&#20986; <span class="t-spar">&#22768;&#26126;</span> &#25110; <span class="t-spar">&#22768;&#26126;&#24207;&#21015;</span> &#20013;&#25152;&#26377;&#20855;&#26377;&#21629;&#21517;&#31354;&#38388;&#20316;&#29992;&#22495;&#30340;&#22768;&#26126;&#12290;</div>
<div class="t-li1"><span class="t-li">4,5,6)</span> &#23548;&#20837;&#22768;&#26126;&#12290;&#23548;&#20837;&#19968;&#20010;&#27169;&#22359;&#21333;&#20803;&#65292;&#27169;&#22359;&#20998;&#21306;&#65292;&#25110;&#22836;&#21333;&#20803;&#12290;</div>
<div class="t-li1"><span class="t-li">7)</span> &#24320;&#22987;&#19968;&#20010;<i>&#20840;&#23616;&#27169;&#22359;&#29255;&#27573;</i>&#12290;</div>
<div class="t-li1"><span class="t-li">8)</span> &#24320;&#22987;&#19968;&#20010;<i>&#31169;&#26377;&#27169;&#22359;&#29255;&#27573;</i>&#12290;</div>
<h3><span class="mw-headline" id=".E6.A8.A1.E5.9D.97.E5.A3.B0.E6.98.8E">&#27169;&#22359;&#22768;&#26126;</span></h3>
<p>&#32763;&#35793;&#21333;&#20803;&#21487;&#20197;&#26377;&#19968;&#20010;&#27169;&#22359;&#22768;&#26126;&#65292;&#36825;&#31181;&#24773;&#20917;&#19979;&#23427;&#20204;&#34987;&#35270;&#20026;<i>&#27169;&#22359;&#21333;&#20803;</i>&#12290;<i>&#27169;&#22359;&#22768;&#26126;</i>&#22312;&#26377;&#25552;&#20379;&#26102;&#24517;&#39035;&#26159;&#32763;&#35793;&#21333;&#20803;&#30340;&#39318;&#20010;&#22768;&#26126;&#65288;&#21518;&#38754;&#25552;&#21040;&#30340;<i>&#20840;&#23616;&#27169;&#22359;&#29255;&#27573;</i>&#38500;&#22806;&#65289;&#12290;&#27599;&#20010;&#27169;&#22359;&#21333;&#20803;&#37117;&#23545;&#24212;&#19968;&#20010;<i>&#27169;&#22359;&#21517;</i>&#65288;&#21487;&#20197;&#24102;&#19968;&#20010;&#20998;&#21306;&#65289;&#65292;&#23427;&#22312;&#27169;&#22359;&#22768;&#26126;&#20013;&#25552;&#20379;&#12290;</p>
<table>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><code><b>export</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>module</b></code> <span class="t-spar">&#27169;&#22359;&#21517;</span> <span class="t-spar">&#27169;&#22359;&#20998;&#21306;</span><span class="t-mark">(&#21487;&#36873;)</span> <span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>;</b></code></td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<p>&#27169;&#22359;&#21517;&#21253;&#21547;&#30001;&#28857;&#20998;&#38548;&#30340;&#19968;&#20010;&#25110;&#22810;&#20010;&#26631;&#35782;&#31526;&#65288;&#20363;&#22914;&#65306;<code>mymodule</code>&#65292;<code>mymodule.mysubmodule</code>&#65292;<code>mymodule2</code>...&#65289;&#12290;&#28857;&#27809;&#26377;&#20869;&#22312;&#21547;&#20041;&#65292;&#19981;&#36807;&#23427;&#20204;&#20250;&#38750;&#27491;&#24335;&#22320;&#29992;&#20110;&#34920;&#31034;&#32487;&#25215;&#20851;&#31995;&#12290;</p>
<p>&#19968;&#20010;<i>&#20855;&#21517;&#27169;&#22359;</i>&#26159;&#19968;&#32452;&#27169;&#22359;&#21517;&#30456;&#21516;&#30340;&#27169;&#22359;&#21333;&#20803;&#12290;</p>
<p>&#22768;&#26126;&#20013;&#24102;&#26377;&#20851;&#38190;&#35789; <code><b>export</b></code> &#30340;&#27169;&#22359;&#21333;&#20803;&#26159;<i>&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;</i>&#12290;&#20854;&#20182;&#27169;&#22359;&#21333;&#20803;&#34987;&#31216;&#20026;<i>&#27169;&#22359;&#23454;&#29616;&#21333;&#20803;</i>&#12290;</p>
<p>&#23545;&#20110;&#27599;&#20010;&#20855;&#21517;&#27169;&#22359;&#65292;&#24517;&#39035;&#26377;&#24688;&#22909;&#19968;&#20010;&#26410;&#25351;&#23450;&#27169;&#22359;&#20998;&#21306;&#30340;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#12290;&#36825;&#20010;&#27169;&#22359;&#21333;&#20803;&#34987;&#31216;&#20026;<i>&#20027;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;</i>&#12290;&#22312;&#23548;&#20837;&#23545;&#24212;&#30340;&#20855;&#21517;&#27169;&#22359;&#26102;&#21487;&#20197;&#20351;&#29992;&#23427;&#23548;&#20986;&#30340;&#20869;&#23481;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">// &#65288;&#27599;&#34892;&#34920;&#31034;&#19968;&#20010;&#21333;&#29420;&#30340;&#32763;&#35793;&#21333;&#20803;&#65289;</span>
export module A<span class="sy4">;</span> <span class="co1">// &#20026;&#20855;&#21517;&#27169;&#22359; &#39;A&#39; &#22768;&#26126;&#20027;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;</span>
module A<span class="sy4">;</span> <span class="co1">// &#20026;&#20855;&#21517;&#27169;&#22359; &#39;A&#39; &#22768;&#26126;&#19968;&#20010;&#27169;&#22359;&#23454;&#29616;&#21333;&#20803;</span>
module A<span class="sy4">;</span> <span class="co1">// &#20026;&#20855;&#21517;&#27169;&#22359; &#39;A&#39; &#22768;&#26126;&#21478;&#19968;&#20010;&#27169;&#22359;&#23454;&#29616;&#21333;&#20803;</span>
export module A.<span class="me1">B</span><span class="sy4">;</span> <span class="co1">// &#20026;&#20855;&#21517;&#27169;&#22359; &#39;A.B&#39; &#22768;&#26126;&#20027;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;</span>
module A.<span class="me1">B</span><span class="sy4">;</span> <span class="co1">// &#20026;&#20855;&#21517;&#27169;&#22359; &#39;A.B&#39; &#22768;&#26126;&#19968;&#20010;&#27169;&#22359;&#23454;&#29616;&#21333;&#20803;</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.AF.BC.E5.87.BA.E5.A3.B0.E6.98.8E.E5.92.8C.E5.AE.9A.E4.B9.89">&#23548;&#20986;&#22768;&#26126;&#21644;&#23450;&#20041;</span></h3>
<p>&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#21487;&#20197;&#23548;&#20986;&#22768;&#26126;&#21644;&#23450;&#20041;&#65292;&#36825;&#20123;&#20869;&#23481;&#21487;&#20197;&#23548;&#20837;&#21040;&#20854;&#20182;&#32763;&#35793;&#21333;&#20803;&#12290;&#23427;&#20204;&#21487;&#20197;&#26377; <code><b>export</b></code> &#20851;&#38190;&#35789;&#20316;&#20026;&#21069;&#32512;&#65292;&#25110;&#32773;&#22788;&#20110; <code><b>export</b></code> &#22359;&#20013;&#12290;</p>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><code><b>export</b></code> <span class="t-spar">&#22768;&#26126;</span></td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><code><b>export</b></code> <code><b>{</b></code> <span class="t-spar">&#22768;&#26126;&#24207;&#21015;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>}</b></code></td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1">export module A<span class="sy4">;</span> <span class="co1">// &#20026;&#20855;&#21517;&#27169;&#22359; &#39;A&#39; &#22768;&#26126;&#20027;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;</span>
<span class="co1">// hello() &#20250;&#22312;&#25152;&#26377;&#23548;&#20837; &#39;A&#39; &#30340;&#32763;&#35793;&#21333;&#20803;&#20013;&#21487;&#35265;</span>
export <span class="kw4">char</span> <span class="kw4">const</span><span class="sy2">*</span> hello<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="st0">&quot;hello&quot;</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="co1">// world() &#19981;&#21487;&#35265;</span>
<span class="kw4">char</span> <span class="kw4">const</span><span class="sy2">*</span> world<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="st0">&quot;world&quot;</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="co1">// one() &#21644; zero() &#22343;&#21487;&#35265;</span>
export <span class="br0">{</span>
<span class="kw4">int</span> one<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="nu0">1</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="kw4">int</span> zero<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="br0">}</span>
<span class="co1">// &#20063;&#21487;&#20197;&#23548;&#20986;&#21629;&#21517;&#31354;&#38388;&#65306;hi::english() &#21644; hi::french() &#22343;&#21487;&#35265;</span>
export <span class="kw1">namespace</span> hi <span class="br0">{</span>
<span class="kw4">char</span> <span class="kw4">const</span><span class="sy2">*</span> english<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="st0">&quot;Hi!&quot;</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="kw4">char</span> <span class="kw4">const</span><span class="sy2">*</span> french<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="st0">&quot;Salut!&quot;</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="br0">}</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.AF.BC.E5.85.A5.E6.A8.A1.E5.9D.97.E5.92.8C.E5.A4.B4">&#23548;&#20837;&#27169;&#22359;&#21644;&#22836;</span></h3>
<p>&#27169;&#22359;&#21487;&#20197;&#36890;&#36807;<i>&#23548;&#20837;&#22768;&#26126;</i>&#23548;&#20837;&#65306;</p>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><code><b>export</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>import</b></code> <span class="t-spar">&#27169;&#22359;&#21517;</span> <span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>;</b></code></td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<p>&#25152;&#26377;&#22312;&#32473;&#23450;&#20855;&#21517;&#27169;&#22359;&#30340;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#20013;&#23548;&#20986;&#30340;&#22768;&#26126;&#21644;&#23450;&#20041;&#37117;&#20250;&#22312;&#20351;&#29992;&#23548;&#20837;&#22768;&#26126;&#30340;&#32763;&#35793;&#21333;&#20803;&#20013;&#21487;&#35265;&#12290;</p>
<p>&#23548;&#20837;&#30340;&#22768;&#26126;&#22312;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#37324;&#21487;&#20197;&#20877;&#23548;&#20986;&#12290;&#20063;&#23601;&#26159;&#35828;&#65292;&#22914;&#26524;&#27169;&#22359; A &#23548;&#20837; B &#21518;&#21448;&#23548;&#20986;&#65292;&#37027;&#20040;&#23548;&#20837; A &#20063;&#20250;&#20351;&#25152;&#26377;&#20174; B &#23548;&#20986;&#30340;&#20869;&#23481;&#21487;&#35265;&#12290;</p>
<p>&#22312;&#27169;&#22359;&#21333;&#20803;&#37324;&#65292;&#25152;&#26377;&#23548;&#20837;&#22768;&#26126;&#65288;&#21253;&#25324;&#24102;&#23548;&#20986;&#30340;&#23548;&#20837;&#65289;&#24517;&#39035;&#38598;&#20013;&#22312;&#27169;&#22359;&#22768;&#26126;&#21518;&#20197;&#21450;&#25152;&#26377;&#20854;&#20182;&#22768;&#26126;&#21069;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">/////// A.cpp &#65288;&#39;A&#39; &#30340;&#20027;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#65289;</span>
export module A<span class="sy4">;</span>
export <span class="kw4">char</span> <span class="kw4">const</span><span class="sy2">*</span> hello<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="st0">&quot;hello&quot;</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="co1">/////// B.cpp &#65288;&#39;B&#39; &#30340;&#20027;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#65289;</span>
export module B<span class="sy4">;</span>
export import A<span class="sy4">;</span>
export <span class="kw4">char</span> <span class="kw4">const</span><span class="sy2">*</span> world<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="st0">&quot;world&quot;</span><span class="sy4">;</span> <span class="br0">}</span>
<span class="co1">/////// main.cpp &#65288;&#38750;&#27169;&#22359;&#21333;&#20803;&#65289;</span>
<span class="co2">#include &lt;iostream&gt;</span>
import B<span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> hello<span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span> <span class="sy1">&lt;&lt;</span> world<span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#22312;&#27169;&#22359;&#21333;&#20803;&#37324;&#65288;<i>&#20840;&#23616;&#27169;&#22359;&#29255;&#27573;</i>&#20197;&#22806;&#65289;&#19981;&#33021;&#20351;&#29992; <a href="cpp-preprocessor-include.html"><tt>#include</tt></a>&#65292;&#22240;&#20026;&#25152;&#26377;&#34987;&#21253;&#21547;&#30340;&#22768;&#26126;&#21644;&#23450;&#20041;&#37117;&#20250;&#20316;&#20026;&#27169;&#22359;&#30340;&#19968;&#37096;&#20998;&#12290;&#22836;&#21487;&#20197;&#25913;&#20026;&#36890;&#36807;<i>&#23548;&#20837;&#22768;&#26126;</i>&#23548;&#20837;&#65306;</p>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><code><b>export</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>import</b></code> <span class="t-spar">&#22836;&#21517;</span> <span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>;</b></code></td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<p>&#23548;&#20837;&#19968;&#20010;&#22836;&#25991;&#20214;&#20250;&#20351;&#20854;&#25152;&#26377;&#22768;&#26126;&#21644;&#23450;&#20041;&#21487;&#35265;&#12290;&#39044;&#22788;&#29702;&#23439;&#20063;&#20250;&#21487;&#35265;&#65288;&#22240;&#20026;&#39044;&#22788;&#29702;&#22120;&#20250;&#35782;&#21035;&#23548;&#20837;&#22768;&#26126;&#65289;&#12290;&#28982;&#32780;&#19982; <code>#include</code> &#30456;&#21453;&#30340;&#26159;&#65292;&#22312;&#65288;&#23548;&#20837;&#36825;&#20010;&#22836;&#25991;&#20214;&#30340;&#65289;&#32763;&#35793;&#21333;&#20803;&#20013;&#23450;&#20041;&#30340;&#39044;&#22788;&#29702;&#23439;&#19981;&#20250;&#24433;&#21709;&#22836;&#25991;&#20214;&#30340;&#22788;&#29702;&#12290;&#36825;&#22312;&#26576;&#20123;&#22330;&#21512;&#20250;&#19981;&#26041;&#20415;&#65288;&#26576;&#20123;&#22836;&#25991;&#20214;&#29992;&#39044;&#22788;&#29702;&#23439;&#20316;&#20026;&#37197;&#32622;&#26041;&#24335;&#65289;&#65292;&#36825;&#31181;&#24773;&#20917;&#19979;&#38656;&#35201;&#20351;&#29992;<i>&#20840;&#23616;&#27169;&#22359;&#29255;&#27573;</i>&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">/////// A.cpp &#65288;&#39;A&#39; &#30340;&#20027;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#65289;</span>
export module A<span class="sy4">;</span>
import <span class="sy1">&lt;</span>iostream<span class="sy1">&gt;</span><span class="sy4">;</span>
export import <span class="sy1">&lt;</span>string_view<span class="sy1">&gt;</span><span class="sy4">;</span>
export <span class="kw4">void</span> print<span class="br0">(</span><a href="cpp-string-basic_string_view.html"><span class="kw1248">std::<span class="me2">string_view</span></span></a> message<span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> message <span class="sy1">&lt;&lt;</span> <a href="cpp-io-manip-endl.html"><span class="kw1791">std::<span class="me2">endl</span></span></a><span class="sy4">;</span>
<span class="br0">}</span>
<span class="co1">/////// main.cpp &#65288;&#38750;&#27169;&#22359;&#21333;&#20803;&#65289;</span>
import A<span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-string-basic_string_view.html"><span class="kw1248">std::<span class="me2">string_view</span></span></a> message <span class="sy1">=</span> <span class="st0">&quot;Hello, world!&quot;</span><span class="sy4">;</span>
print<span class="br0">(</span>message<span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.85.A8.E5.B1.80.E6.A8.A1.E5.9D.97.E7.89.87.E6.AE.B5">&#20840;&#23616;&#27169;&#22359;&#29255;&#27573;</span></h3>
<p>&#27169;&#22359;&#21333;&#20803;&#21487;&#20197;&#26377;<i>&#20840;&#23616;&#27169;&#22359;&#29255;&#27573;</i>&#21069;&#32512;&#65292;&#23427;&#21487;&#20197;&#22312;&#26080;&#27861;&#23548;&#20837;&#22836;&#25991;&#20214;&#26102;&#65288;&#23588;&#20854;&#26159;&#22312;&#22836;&#25991;&#20214;&#29992;&#39044;&#22788;&#29702;&#23439;&#36827;&#34892;&#37197;&#32622;&#26102;&#65289;&#21253;&#21547;&#23427;&#20204;&#12290;</p>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><code><b>module;</b></code>
<p><span class="t-spar">&#39044;&#22788;&#29702;&#25351;&#20196;&#24207;&#21015;</span><span class="t-mark">(&#21487;&#36873;)</span></p>
<p><span class="t-spar">&#27169;&#22359;&#22768;&#26126;</span></p>
</td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<p>&#22914;&#26524;&#19968;&#20010;&#27169;&#22359;&#21333;&#20803;&#26377;&#19968;&#20010;&#20840;&#23616;&#27169;&#22359;&#29255;&#27573;&#65292;&#37027;&#20040;&#23427;&#30340;&#39318;&#20010;&#22768;&#26126;&#24517;&#39035;&#26159; <code><b>module;</b></code>&#12290;&#28982;&#21518;&#22312;&#20840;&#23616;&#27169;&#22359;&#29255;&#27573;&#20013;&#21482;&#33021;&#20986;&#29616;<a href="cpp-preprocessor.html#.E6.8C.87.E4.BB.A4">&#39044;&#22788;&#29702;&#25351;&#20196;</a>&#12290;&#28982;&#21518;&#29992;&#19968;&#20010;&#26631;&#20934;&#30340;&#27169;&#22359;&#22768;&#26126;&#32467;&#26463;&#36825;&#20010;&#20840;&#23616;&#27169;&#22359;&#29255;&#27573;&#65292;&#21518;&#38754;&#23601;&#26159;&#27169;&#22359;&#20869;&#23481;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">/////// A.cpp &#65288;&#39;A&#39; &#30340;&#20027;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#65289;</span>
module<span class="sy4">;</span>
<span class="co1">// &#25353;&#29031; POSIX &#26631;&#20934;&#65292;&#23450;&#20041; _POSIX_C_SOURCE &#20250;&#21521;&#26631;&#20934;&#22836;&#20013;&#28155;&#21152;&#20989;&#25968;&#12290;</span>
<span class="co2">#define _POSIX_C_SOURCE 200809L</span>
<span class="co2">#include &lt;stdlib.h&gt;</span>
export module A<span class="sy4">;</span>
import <span class="sy1">&lt;</span>ctime<span class="sy1">&gt;</span><span class="sy4">;</span>
<span class="co1">// &#20165;&#29992;&#20110;&#28436;&#31034;&#65288;&#24046;&#30340;&#38543;&#26426;&#28304;&#65289;&#12290;&#24212;&#25913;&#20026;&#20351;&#29992; C++ &lt;random&gt;&#12290;</span>
export <span class="kw4">double</span> weak_random<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-chrono-c-timespec.html"><span class="kw1026">std::<span class="me2">timespec</span></span></a> ts<span class="sy4">;</span>
<a href="cpp-chrono-c-timespec_get.html"><span class="kw1013">std::<span class="me2">timespec_get</span></span></a><span class="br0">(</span><span class="sy3">&amp;</span>ts, <a href="cpp-chrono-c-timespec_get.html"><span class="kw1014">TIME_UTC</span></a><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#26469;&#33258; &lt;ctime&gt;</span>
<span class="co1">// &#25353;&#29031; POSIX &#26631;&#20934;&#20174; &lt;stdlib.h&gt; &#25552;&#20379;&#12290;</span>
srand48<span class="br0">(</span>ts.<span class="me1">tv_nsec</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// drand48() &#36820;&#22238; 0 &#19982; 1 &#20043;&#38388;&#30340;&#19968;&#20010;&#38543;&#26426;&#25968;</span>
<span class="kw1">return</span> drand48<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="co1">/////// main.cpp &#65288;&#38750;&#27169;&#22359;&#21333;&#20803;&#65289;</span>
import <span class="sy1">&lt;</span>iostream<span class="sy1">&gt;</span><span class="sy4">;</span>
import A<span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;0 &#19982; 1 &#20043;&#38388;&#30340;&#38543;&#26426;&#20540;&#65306;&quot;</span> <span class="sy1">&lt;&lt;</span> weak_random<span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E6.A8.A1.E5.9D.97.E5.88.86.E5.8C.BA">&#27169;&#22359;&#20998;&#21306;</span></h3>
<p>&#19968;&#20010;&#27169;&#22359;&#21487;&#20197;&#26377;<i>&#27169;&#22359;&#20998;&#21306;&#21333;&#20803;</i>&#12290;&#23427;&#20204;&#26159;&#27169;&#22359;&#22768;&#26126;&#20013;&#21253;&#21547;&#20102;&#19968;&#20010;&#27169;&#22359;&#20998;&#21306;&#30340;&#27169;&#22359;&#21333;&#20803;&#65292;&#27169;&#22359;&#20998;&#21306;&#22312;&#27169;&#22359;&#21517;&#20043;&#21518;&#65292;&#20197;&#19968;&#20010;&#20882;&#21495; <code><b>:</b></code> &#24320;&#22836;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1">export module A<span class="sy4">:</span>B<span class="sy4">;</span> <span class="co1">// &#20026;&#27169;&#22359; &#39;A&#39; &#20998;&#21306; &#39;B&#39; &#22768;&#26126;&#19968;&#20010;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#12290;</span></pre></div>
</div>
<p>&#19968;&#20010;&#27169;&#22359;&#20998;&#21306;&#34920;&#31034;&#24688;&#22909;&#19968;&#20010;&#27169;&#22359;&#21333;&#20803;&#65288;&#20004;&#20010;&#27169;&#22359;&#21333;&#20803;&#19981;&#33021;&#25351;&#23450;&#21516;&#19968;&#20010;&#27169;&#22359;&#20998;&#21306;&#65289;&#12290;&#23427;&#20204;&#21482;&#22312;&#33258;&#24049;&#25152;&#22312;&#30340;&#20855;&#21517;&#27169;&#22359;&#20869;&#37096;&#21487;&#35265;&#65288;&#22312;&#35813;&#20855;&#21517;&#27169;&#22359;&#22806;&#30340;&#32763;&#35793;&#21333;&#20803;&#19981;&#33021;&#30452;&#25509;&#23548;&#20837;&#36825;&#20123;&#27169;&#22359;&#20998;&#21306;&#65289;&#12290;</p>
<p>&#27169;&#22359;&#20998;&#21306;&#21482;&#33021;&#34987;&#30456;&#21516;&#20855;&#21517;&#27169;&#22359;&#30340;&#27169;&#22359;&#21333;&#20803;&#23548;&#20837;&#12290;</p>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><code><b>export</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>import</b></code> <span class="t-spar">&#27169;&#22359;&#20998;&#21306;</span> <span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>;</b></code></td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">/////// A-B.cpp </span>
export module A<span class="sy4">:</span>B<span class="sy4">;</span>
...
<span class="co1">/////// A-C.cpp</span>
module A<span class="sy4">:</span>C<span class="sy4">;</span>
...
<span class="co1">/////// A.cpp</span>
export module A<span class="sy4">;</span>
import <span class="sy4">:</span>C<span class="sy4">;</span>
export import <span class="sy4">:</span>B<span class="sy4">;</span>
...</pre></div>
</div>
<p>&#27169;&#22359;&#20998;&#21306;&#20869;&#30340;&#25152;&#26377;&#22768;&#26126;&#21644;&#23450;&#20041;&#22312;&#23558;&#20854;&#23548;&#20837;&#30340;&#27169;&#22359;&#21333;&#20803;&#20013;&#22343;&#21487;&#35265;&#65292;&#26080;&#35770;&#23427;&#20204;&#26159;&#21542;&#34987;&#23548;&#20986;&#12290;</p>
<p>&#27169;&#22359;&#20998;&#21306;&#21487;&#20197;&#26159;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#65288;&#22914;&#26524;&#27169;&#22359;&#22768;&#26126;&#20013;&#26377; <code><b>export</b></code>&#65289;&#12290;&#23427;&#20204;&#24517;&#39035;&#34987;&#20027;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;&#22312;&#23548;&#20837;&#21516;&#26102;&#23548;&#20986;&#65292;&#24182;&#19988;&#23427;&#20204;&#23548;&#20986;&#30340;&#35821;&#21477;&#22312;&#27169;&#22359;&#34987;&#23548;&#20837;&#26102;&#22343;&#21487;&#35265;&#12290;</p>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><code><b>export</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>import</b></code> <span class="t-spar">&#27169;&#22359;&#20998;&#21306;</span> <span class="t-spar">&#23646;&#24615;</span><span class="t-mark">(&#21487;&#36873;)</span> <code><b>;</b></code></td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">/////// A.cpp </span>
export module A<span class="sy4">;</span> <span class="co1">// &#20027;&#27169;&#22359;&#25509;&#21475;&#21333;&#20803;</span>
export import <span class="sy4">:</span>B<span class="sy4">;</span> <span class="co1">// Hello() &#22312;&#23548;&#20837; &#39;A&#39; &#26102;&#21487;&#35265;</span>
import <span class="sy4">:</span>C<span class="sy4">;</span> <span class="co1">// &#29616;&#22312; WorldImpl() &#21482;&#23545; &#39;A.cpp&#39; &#21487;&#35265;</span>
<span class="co1">// export import :C; // &#38169;&#35823;&#65306;&#26080;&#27861;&#23548;&#20986;&#27169;&#22359;&#23454;&#29616;&#21333;&#20803;</span>
<span class="co1">// World() &#23545;&#25152;&#26377;&#23548;&#20837; &#39;A&#39; &#30340;&#32763;&#35793;&#21333;&#20803;&#22343;&#21487;&#35265;</span>
export <span class="kw4">char</span> <span class="kw4">const</span><span class="sy2">*</span> World<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">return</span> WorldImpl<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">/////// A-B.cpp </span>
export module A<span class="sy4">:</span>B<span class="sy4">;</span> <span class="co1">// &#27169;&#22359;&#20998;&#21306;&#25509;&#21475;&#21333;&#20803;</span>
<span class="co1">// Hello() &#23545;&#25152;&#26377;&#23548;&#20837; &#39;A&#39; &#30340;&#32763;&#35793;&#21333;&#20803;&#22343;&#21487;&#35265;</span>
export <span class="kw4">char</span> <span class="kw4">const</span><span class="sy2">*</span> Hello<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="st0">&quot;Hello&quot;</span><span class="sy4">;</span> <span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">/////// A-C.cpp </span>
module A<span class="sy4">:</span>C<span class="sy4">;</span> <span class="co1">// &#27169;&#22359;&#20998;&#21306;&#23454;&#29616;&#21333;&#20803;</span>
<span class="co1">// WorldImpl() &#23545; &#39;A&#39; &#20013;&#25152;&#26377;&#23548;&#20837; &#39;:C&#39; &#30340;&#32763;&#35793;&#21333;&#20803;&#22343;&#21487;&#35265;</span>
<span class="kw4">char</span> <span class="kw4">const</span><span class="sy2">*</span> WorldImpl<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">return</span> <span class="st0">&quot;World&quot;</span><span class="sy4">;</span> <span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co1">/////// main.cpp </span>
import A<span class="sy4">;</span>
import <span class="sy1">&lt;</span>iostream<span class="sy1">&gt;</span><span class="sy4">;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> Hello<span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span> <span class="sy1">&lt;&lt;</span> World<span class="br0">(</span><span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="co1">// WorldImpl(); // &#38169;&#35823;&#65306;WorldImpl() &#19981;&#21487;&#35265;</span>
<span class="br0">}</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.85.B3.E9.94.AE.E8.AF.8D">&#20851;&#38190;&#35789;</span></h3>
<p><a href="cpp-keyword-export.html"><tt>export</tt></a>&#65292;<a href="cpp-keyword-import.html"><tt>import</tt></a>&#65292;<a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/keyword/module&amp;action=edit&amp;redlink=1" class="new" title="cpp/keyword/module&#65288;&#39029;&#38754;&#19981;&#23384;&#22312;&#65289;"><tt>module</tt></a></p>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>