[{"data":1,"prerenderedAt":2660},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie":2238,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie":2644,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie":2659},{"id":4,"title":5,"body":6,"canonicalPath":2220,"chapterDepth":110,"chapterOrder":2221,"date":2222,"description":103,"docI18nKey":2223,"docKey":2224,"docRoot":2225,"docTitle":2226,"extension":2227,"i18nKey":2228,"isBlogPost":2229,"isWikiDoc":137,"isWikiIndex":2229,"layout":2230,"legacyPath":2230,"locale":2231,"localeSlug":2232,"meta":2233,"navigation":137,"path":2220,"seo":2234,"sourcePath":2235,"sourceStem":2228,"stem":2236,"wikiDepth":110,"__hash__":2237},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介.md","Modules Introduction",{"type":7,"value":8,"toc":2198},"minimark",[9,14,23,54,57,61,67,71,78,82,93,97,349,355,359,445,451,468,573,578,628,632,651,654,663,741,744,748,752,761,892,900,1033,1042,1048,1134,1139,1147,1151,1159,1359,1365,1450,1454,1460,1464,1467,1476,1560,1568,1658,1665,1783,1787,1793,1797,1800,1804,1807,1810,1905,1909,1914,1931,1942,1949,1990,1996,2001,2007,2010,2015,2078,2087,2090,2107,2110,2156,2160,2194],[10,11,13],"h2",{"id":12},"what-problem-does-this-section-solve","What problem does this section solve?",[15,16,17,18,22],"p",{},"Traditional ",[19,20,21],"code",{},"#include"," has three major problems:",[24,25,26,38,48],"ol",{},[27,28,29,33,34,37],"li",{},[30,31,32],"strong",{},"Slow compilation",": Every ",[19,35,36],{},".cpp"," file requires re-parsing all included header files (potentially tens of thousands of lines).",[27,39,40,43,44,47],{},[30,41,42],{},"Macro pollution",": ",[19,45,46],{},"#define"," affects all code following its inclusion.",[27,49,50,53],{},[30,51,52],{},"Sequential dependencies",": The order of includes may affect program behavior.",[15,55,56],{},"Modules are a new feature introduced in C++20 that fundamentally solves these problems—faster compilation, better isolation, and no macro leakage.",[10,58,60],{"id":59},"what-is-this-feature","What is this feature?",[15,62,63,64,66],{},"Modules are a module system introduced in C++20. Unlike ",[19,65,21],{}," (text copy and paste), modules are precompiled interface declarations that only export the parts you want to expose, completely hiding internal implementations.",[10,68,70],{"id":69},"c-standard-version","C++ standard version",[15,72,73,74,77],{},"C++20 (formally introduced), C++23 enhanced the ",[19,75,76],{},"import std;"," standard library module.",[10,79,81],{"id":80},"required-header-files","Required header files",[15,83,84,85,88,89,92],{},"Modules do not need header files. Module files usually use the ",[19,86,87],{},".cppm"," extension (community convention) or ",[19,90,91],{},".ixx"," (MSVC).",[10,94,96],{"id":95},"basic-syntax","Basic Syntax",[98,99,104],"pre",{"className":100,"code":101,"language":102,"meta":103,"style":103},"language-cpp shiki shiki-themes github-light github-dark","\u002F\u002F math_module.cppm —— 模块接口文件\nexport module math;           \u002F\u002F 声明模块名\n\nexport int add(int a, int b)  \u002F\u002F export：对外可见\n{\n    return a + b;\n}\n\nint multiply(int a, int b)    \u002F\u002F 没有 export：模块内部可见\n{\n    return a * b;\n}\n\n\u002F\u002F main.cpp —— 使用模块\nimport math;                  \u002F\u002F 导入模块（替代 #include）\n\nint main()\n{\n    int x = add(3, 5);        \u002F\u002F ✅ 可以访问\n    \u002F\u002F int y = multiply(3, 5); \u002F\u002F ❌ 不可访问（没有 export）\n    return 0;\n}\n","cpp","",[19,105,106,115,132,139,168,174,189,195,200,230,235,247,252,257,263,272,277,288,293,324,333,344],{"__ignoreMap":103},[107,108,111],"span",{"class":109,"line":110},"line",1,[107,112,114],{"class":113},"sJ8bj","\u002F\u002F math_module.cppm —— 模块接口文件\n",[107,116,118,122,125,129],{"class":109,"line":117},2,[107,119,121],{"class":120},"szBVR","export",[107,123,124],{"class":120}," module",[107,126,128],{"class":127},"sVt8B"," math;",[107,130,131],{"class":113},"           \u002F\u002F 声明模块名\n",[107,133,135],{"class":109,"line":134},3,[107,136,138],{"emptyLinePlaceholder":137},true,"\n",[107,140,142,144,147,151,154,157,160,162,165],{"class":109,"line":141},4,[107,143,121],{"class":120},[107,145,146],{"class":120}," int",[107,148,150],{"class":149},"sScJk"," add",[107,152,153],{"class":127},"(",[107,155,156],{"class":120},"int",[107,158,159],{"class":127}," a, ",[107,161,156],{"class":120},[107,163,164],{"class":127}," b)",[107,166,167],{"class":113},"  \u002F\u002F export：对外可见\n",[107,169,171],{"class":109,"line":170},5,[107,172,173],{"class":127},"{\n",[107,175,177,180,183,186],{"class":109,"line":176},6,[107,178,179],{"class":120},"    return",[107,181,182],{"class":127}," a ",[107,184,185],{"class":120},"+",[107,187,188],{"class":127}," b;\n",[107,190,192],{"class":109,"line":191},7,[107,193,194],{"class":127},"}\n",[107,196,198],{"class":109,"line":197},8,[107,199,138],{"emptyLinePlaceholder":137},[107,201,203,205,208,210,212,216,219,221,224,227],{"class":109,"line":202},9,[107,204,156],{"class":120},[107,206,207],{"class":149}," multiply",[107,209,153],{"class":127},[107,211,156],{"class":120},[107,213,215],{"class":214},"s4XuR"," a",[107,217,218],{"class":127},", ",[107,220,156],{"class":120},[107,222,223],{"class":214}," b",[107,225,226],{"class":127},")",[107,228,229],{"class":113},"    \u002F\u002F 没有 export：模块内部可见\n",[107,231,233],{"class":109,"line":232},10,[107,234,173],{"class":127},[107,236,238,240,242,245],{"class":109,"line":237},11,[107,239,179],{"class":120},[107,241,182],{"class":127},[107,243,244],{"class":120},"*",[107,246,188],{"class":127},[107,248,250],{"class":109,"line":249},12,[107,251,194],{"class":127},[107,253,255],{"class":109,"line":254},13,[107,256,138],{"emptyLinePlaceholder":137},[107,258,260],{"class":109,"line":259},14,[107,261,262],{"class":113},"\u002F\u002F main.cpp —— 使用模块\n",[107,264,266,269],{"class":109,"line":265},15,[107,267,268],{"class":127},"import math;",[107,270,271],{"class":113},"                  \u002F\u002F 导入模块（替代 #include）\n",[107,273,275],{"class":109,"line":274},16,[107,276,138],{"emptyLinePlaceholder":137},[107,278,280,282,285],{"class":109,"line":279},17,[107,281,156],{"class":120},[107,283,284],{"class":149}," main",[107,286,287],{"class":127},"()\n",[107,289,291],{"class":109,"line":290},18,[107,292,173],{"class":127},[107,294,296,299,302,305,307,309,313,315,318,321],{"class":109,"line":295},19,[107,297,298],{"class":120},"    int",[107,300,301],{"class":127}," x ",[107,303,304],{"class":120},"=",[107,306,150],{"class":149},[107,308,153],{"class":127},[107,310,312],{"class":311},"sj4cs","3",[107,314,218],{"class":127},[107,316,317],{"class":311},"5",[107,319,320],{"class":127},");",[107,322,323],{"class":113},"        \u002F\u002F ✅ 可以访问\n",[107,325,327,330],{"class":109,"line":326},20,[107,328,329],{"class":113},"    \u002F\u002F int y = multiply(3, 5);",[107,331,332],{"class":113}," \u002F\u002F ❌ 不可访问（没有 export）\n",[107,334,336,338,341],{"class":109,"line":335},21,[107,337,179],{"class":120},[107,339,340],{"class":311}," 0",[107,342,343],{"class":127},";\n",[107,345,347],{"class":109,"line":346},22,[107,348,194],{"class":127},[15,350,351,354],{},[30,352,353],{},"Results:"," The program exits normally, and there is no additional output in the terminal.",[10,356,358],{"id":357},"core-concepts","Core Concepts",[360,361,362,376],"table",{},[363,364,365],"thead",{},[366,367,368,373],"tr",{},[369,370,372],"th",{"align":371},"left","concept",[369,374,375],{"align":371},"Explanation",[377,378,379,390,399,409,419,433],"tbody",{},[366,380,381,387],{},[382,383,384],"td",{"align":371},[19,385,386],{},"export module 模块名;",[382,388,389],{"align":371},"Declare a module (in the module interface file)",[366,391,392,396],{},[382,393,394],{"align":371},[19,395,121],{},[382,397,398],{"align":371},"Mark externally visible functions\u002Fclasses\u002Fvariables",[366,400,401,406],{},[382,402,403],{"align":371},[19,404,405],{},"import 模块名;",[382,407,408],{"align":371},"Import a module",[366,410,411,416],{},[382,412,413],{"align":371},[19,414,415],{},"import \u003C头文件>;",[382,417,418],{"align":371},"Importing Traditional Header Files (using it as a module, compiler support is limited)",[366,420,421,424],{},[382,422,423],{"align":371},"Module Interface Unit",[382,425,426,428,429,432],{"align":371},[19,427,87],{}," file, contains ",[19,430,431],{},"export module"," microcontroller tutorial.",[366,434,435,438],{},[382,436,437],{"align":371},"Module implementation unit",[382,439,440,441,444],{"align":371},"The file, containing the ",[19,442,443],{},"module 模块名;"," (without export)",[10,446,448],{"id":447},"include-与模块的核心区别",[30,449,450],{},"Include 与模块的核心区别",[15,452,453,454,459,460,463,464,467],{},"在编程中，",[30,455,456],{},[19,457,458],{},"include","（或 ",[19,461,462],{},"import","）和 ",[30,465,466],{},"模块（module）"," 都是用于组织和管理代码的机制，但它们在实现、作用和效率上有显著差异。以下是它们的核心区别对比：",[360,469,470,487],{},[363,471,472],{},[366,473,474,477,482],{},[369,475,476],{},"特性",[369,478,479],{},[30,480,481],{},"Include \u002F 导入",[369,483,484],{},[30,485,486],{},"模块（Module）",[377,488,489,502,515,528,541,554],{},[366,490,491,496,499],{},[382,492,493],{},[30,494,495],{},"本质",[382,497,498],{},"文本替换或文件包含（编译预处理阶段）",[382,500,501],{},"编译单元，独立的二进制或可复用组件",[366,503,504,509,512],{},[382,505,506],{},[30,507,508],{},"编译过程",[382,510,511],{},"每次编译都会重新解析包含的文件，可能重复编译",[382,513,514],{},"编译一次生成独立模块，后续直接复用，避免重复编译",[366,516,517,522,525],{},[382,518,519],{},[30,520,521],{},"依赖管理",[382,523,524],{},"依赖链可能隐晦，易导致循环依赖或命名冲突",[382,526,527],{},"显式声明依赖关系，结构清晰，便于管理",[366,529,530,535,538],{},[382,531,532],{},[30,533,534],{},"封装性",[382,536,537],{},"通常无封装，所有内容直接暴露在当前作用域",[382,539,540],{},"支持封装，可控制公开接口和内部实现",[366,542,543,548,551],{},[382,544,545],{},[30,546,547],{},"构建效率",[382,549,550],{},"大型项目编译慢，因为重复处理相同代码",[382,552,553],{},"显著提升构建速度，模块可独立编译和缓存",[366,555,556,561,570],{},[382,557,558],{},[30,559,560],{},"典型场景",[382,562,563,564,566,567,569],{},"传统C\u002FC++的 ",[19,565,21],{},"、Python 的 ",[19,568,462],{}," 语句",[382,571,572],{},"现代语言特性（如ES模块、Rust模块、Java 9模块）",[574,575,577],"h3",{"id":576},"简要说明","简要说明：",[24,579,580,609],{},[27,581,582,589],{},[30,583,584,586,587],{},[19,585,458],{},"\u002F",[19,588,462],{},[590,591,592,595,598],"ul",{},[27,593,594],{},"类似于“复制粘贴”代码（文本层面），常见于C\u002FC++的预处理或Python的导入语句。",[27,596,597],{},"可能引发重复编译、头文件依赖地狱（C\u002FC++）等问题。",[27,599,600,601,604,605,608],{},"例如：",[19,602,603],{},"#include \u003Cstdio.h>"," 或 ",[19,606,607],{},"import os","。",[27,610,611,613],{},[30,612,486],{},[590,614,615,618,621],{},[27,616,617],{},"作为独立的编译单元或包，提供清晰的边界和接口定义。",[27,619,620],{},"支持按需加载、依赖隔离和版本管理，更适合大型工程。",[27,622,623,624,627],{},"例如：ES模块（",[19,625,626],{},"export\u002Fimport","）、Rust模块系统。",[574,629,631],{"id":630},"选择建议","选择建议：",[590,633,634,645],{},[27,635,636,639,640,586,642,644],{},[30,637,638],{},"传统项目\u002F简单脚本","：",[19,641,458],{},[19,643,462],{}," 通常足够且灵活。",[27,646,647,650],{},[30,648,649],{},"大型项目\u002F长期维护","：优先使用模块系统，以提升可维护性和构建效率。",[15,652,653],{},"模块化是现代软件工程的趋势，但具体选择需结合语言特性和项目需求。",[15,655,656,657,659,660,662],{},"Don't understand modules as simply \"replacing ",[19,658,21],{}," with ",[19,661,462],{},".\" The compilation models for the two are different, so the problems they can solve also differ.",[360,664,665,681],{},[363,666,667],{},[366,668,669,672,676],{},[369,670,671],{"align":371},"Compare points",[369,673,674],{"align":371},[19,675,21],{},[369,677,678],{"align":371},[19,679,680],{},"import module",[377,682,683,694,708,719,730],{},[366,684,685,688,691],{},[382,686,687],{"align":371},"working mode",[382,689,690],{"align":371},"Copy the text, paste the header file content into the current file.",[382,692,693],{"align":371},"Import the precompiled module interface.",[366,695,696,699,702],{},[382,697,698],{"align":371},"visibility",[382,700,701],{"align":371},"What's written in the header files can generally be seen by those who include them.",[382,703,704,705,707],{"align":371},"Only the name of ",[19,706,121],{}," is externally visible.",[366,709,710,713,716],{},[382,711,712],{"align":371},"macro",[382,714,715],{"align":371},"Macros can easily cause backward contamination.",[382,717,718],{"align":371},"Module interfaces won't propagate macros like text inclusion does.",[366,720,721,724,727],{},[382,722,723],{"align":371},"compilation dependency",[382,725,726],{"align":371},"The include order may affect the result.",[382,728,729],{"align":371},"Module dependencies are more explicit.",[366,731,732,735,738],{},[382,733,734],{"align":371},"Build Requirements",[382,736,737],{"align":371},"All compilers and build systems are maturely supported.",[382,739,740],{"align":371},"Needs a newer compiler and build system.",[15,742,743],{},"So the current focus of learning modules is to thoroughly understand \"the separation of interface and implementation.\" Whether to migrate in real projects depends on whether the toolchain provides stable support.",[10,745,747],{"id":746},"example-code","Example code",[574,749,751],{"id":750},"example-1-the-simplest-module","Example 1: The simplest module",[15,753,754,760],{},[30,755,756,757],{},"File ",[19,758,759],{},"math_module.cppm"," (Module Interface)",[98,762,764],{"className":100,"code":763,"language":102,"meta":103,"style":103},"export module math;\n\nexport int add(int a, int b)\n{\n    return a + b;\n}\n\nexport int subtract(int a, int b)\n{\n    return a - b;\n}\n\n\u002F\u002F 内部函数，不对外暴露\nint internal_helper()\n{\n    return 0;\n}\n",[19,765,766,775,779,798,802,812,816,820,839,843,854,858,862,867,876,880,888],{"__ignoreMap":103},[107,767,768,770,772],{"class":109,"line":110},[107,769,121],{"class":120},[107,771,124],{"class":120},[107,773,774],{"class":127}," math;\n",[107,776,777],{"class":109,"line":117},[107,778,138],{"emptyLinePlaceholder":137},[107,780,781,783,785,787,789,791,793,795],{"class":109,"line":134},[107,782,121],{"class":120},[107,784,146],{"class":120},[107,786,150],{"class":149},[107,788,153],{"class":127},[107,790,156],{"class":120},[107,792,159],{"class":127},[107,794,156],{"class":120},[107,796,797],{"class":127}," b)\n",[107,799,800],{"class":109,"line":141},[107,801,173],{"class":127},[107,803,804,806,808,810],{"class":109,"line":170},[107,805,179],{"class":120},[107,807,182],{"class":127},[107,809,185],{"class":120},[107,811,188],{"class":127},[107,813,814],{"class":109,"line":176},[107,815,194],{"class":127},[107,817,818],{"class":109,"line":191},[107,819,138],{"emptyLinePlaceholder":137},[107,821,822,824,826,829,831,833,835,837],{"class":109,"line":197},[107,823,121],{"class":120},[107,825,146],{"class":120},[107,827,828],{"class":149}," subtract",[107,830,153],{"class":127},[107,832,156],{"class":120},[107,834,159],{"class":127},[107,836,156],{"class":120},[107,838,797],{"class":127},[107,840,841],{"class":109,"line":202},[107,842,173],{"class":127},[107,844,845,847,849,852],{"class":109,"line":232},[107,846,179],{"class":120},[107,848,182],{"class":127},[107,850,851],{"class":120},"-",[107,853,188],{"class":127},[107,855,856],{"class":109,"line":237},[107,857,194],{"class":127},[107,859,860],{"class":109,"line":249},[107,861,138],{"emptyLinePlaceholder":137},[107,863,864],{"class":109,"line":254},[107,865,866],{"class":113},"\u002F\u002F 内部函数，不对外暴露\n",[107,868,869,871,874],{"class":109,"line":259},[107,870,156],{"class":120},[107,872,873],{"class":149}," internal_helper",[107,875,287],{"class":127},[107,877,878],{"class":109,"line":265},[107,879,173],{"class":127},[107,881,882,884,886],{"class":109,"line":274},[107,883,179],{"class":120},[107,885,340],{"class":311},[107,887,343],{"class":127},[107,889,890],{"class":109,"line":279},[107,891,194],{"class":127},[15,893,894],{},[30,895,896,897],{},"File 2: ",[19,898,899],{},"main.cpp",[98,901,903],{"className":100,"code":902,"language":102,"meta":103,"style":103},"import math;\n#include \u003Ciostream>\n\nint main()\n{\n    std::cout \u003C\u003C \"add(3, 5) = \" \u003C\u003C add(3, 5) \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"subtract(10, 3) = \" \u003C\u003C subtract(10, 3) \u003C\u003C \"\\n\";\n    \u002F\u002F internal_helper();  \u002F\u002F ❌ 编译错误！没有 export\n    return 0;\n}\n",[19,904,905,910,918,922,930,934,977,1013,1021,1029],{"__ignoreMap":103},[107,906,907],{"class":109,"line":110},[107,908,909],{"class":127},"import math;\n",[107,911,912,914],{"class":109,"line":117},[107,913,21],{"class":120},[107,915,917],{"class":916},"sZZnC"," \u003Ciostream>\n",[107,919,920],{"class":109,"line":134},[107,921,138],{"emptyLinePlaceholder":137},[107,923,924,926,928],{"class":109,"line":141},[107,925,156],{"class":120},[107,927,284],{"class":149},[107,929,287],{"class":127},[107,931,932],{"class":109,"line":170},[107,933,173],{"class":127},[107,935,936,939,942,945,948,951,953,955,957,959,961,964,966,969,972,975],{"class":109,"line":176},[107,937,938],{"class":149},"    std",[107,940,941],{"class":127},"::cout ",[107,943,944],{"class":120},"\u003C\u003C",[107,946,947],{"class":916}," \"add(3, 5) = \"",[107,949,950],{"class":120}," \u003C\u003C",[107,952,150],{"class":149},[107,954,153],{"class":127},[107,956,312],{"class":311},[107,958,218],{"class":127},[107,960,317],{"class":311},[107,962,963],{"class":127},") ",[107,965,944],{"class":120},[107,967,968],{"class":916}," \"",[107,970,971],{"class":311},"\\n",[107,973,974],{"class":916},"\"",[107,976,343],{"class":127},[107,978,979,981,983,985,988,990,992,994,997,999,1001,1003,1005,1007,1009,1011],{"class":109,"line":191},[107,980,938],{"class":149},[107,982,941],{"class":127},[107,984,944],{"class":120},[107,986,987],{"class":916}," \"subtract(10, 3) = \"",[107,989,950],{"class":120},[107,991,828],{"class":149},[107,993,153],{"class":127},[107,995,996],{"class":311},"10",[107,998,218],{"class":127},[107,1000,312],{"class":311},[107,1002,963],{"class":127},[107,1004,944],{"class":120},[107,1006,968],{"class":916},[107,1008,971],{"class":311},[107,1010,974],{"class":916},[107,1012,343],{"class":127},[107,1014,1015,1018],{"class":109,"line":197},[107,1016,1017],{"class":113},"    \u002F\u002F internal_helper();",[107,1019,1020],{"class":113},"  \u002F\u002F ❌ 编译错误！没有 export\n",[107,1022,1023,1025,1027],{"class":109,"line":202},[107,1024,179],{"class":120},[107,1026,340],{"class":311},[107,1028,343],{"class":127},[107,1030,1031],{"class":109,"line":232},[107,1032,194],{"class":127},[15,1034,1035,1038,1039,1041],{},[30,1036,1037],{},"Runtime Results",": See the \"Runtime Results\" section below; module examples require following the compilation command to generate the module interface first, then run ",[19,1040,899],{},".",[15,1043,1044,1047],{},[30,1045,1046],{},"Compilation Commands (using GCC as an example)",":",[98,1049,1053],{"className":1050,"code":1051,"language":1052,"meta":103,"style":103},"language-bash shiki shiki-themes github-light github-dark","# 先编译模块接口\ng++ -std=c++20 -fmodules-ts -c math_module.cppm -o math_module.o\n\n# 再编译主程序\ng++ -std=c++20 -fmodules-ts -c main.cpp -o main.o\n\n# 链接\ng++ math_module.o main.o -o program\n","bash",[19,1054,1055,1060,1083,1087,1092,1110,1114,1119],{"__ignoreMap":103},[107,1056,1057],{"class":109,"line":110},[107,1058,1059],{"class":113},"# 先编译模块接口\n",[107,1061,1062,1065,1068,1071,1074,1077,1080],{"class":109,"line":117},[107,1063,1064],{"class":149},"g++",[107,1066,1067],{"class":311}," -std=c++20",[107,1069,1070],{"class":311}," -fmodules-ts",[107,1072,1073],{"class":311}," -c",[107,1075,1076],{"class":916}," math_module.cppm",[107,1078,1079],{"class":311}," -o",[107,1081,1082],{"class":916}," math_module.o\n",[107,1084,1085],{"class":109,"line":134},[107,1086,138],{"emptyLinePlaceholder":137},[107,1088,1089],{"class":109,"line":141},[107,1090,1091],{"class":113},"# 再编译主程序\n",[107,1093,1094,1096,1098,1100,1102,1105,1107],{"class":109,"line":170},[107,1095,1064],{"class":149},[107,1097,1067],{"class":311},[107,1099,1070],{"class":311},[107,1101,1073],{"class":311},[107,1103,1104],{"class":916}," main.cpp",[107,1106,1079],{"class":311},[107,1108,1109],{"class":916}," main.o\n",[107,1111,1112],{"class":109,"line":176},[107,1113,138],{"emptyLinePlaceholder":137},[107,1115,1116],{"class":109,"line":191},[107,1117,1118],{"class":113},"# 链接\n",[107,1120,1121,1123,1126,1129,1131],{"class":109,"line":197},[107,1122,1064],{"class":149},[107,1124,1125],{"class":916}," math_module.o",[107,1127,1128],{"class":916}," main.o",[107,1130,1079],{"class":311},[107,1132,1133],{"class":916}," program\n",[15,1135,1136,639],{},[30,1137,1138],{},"Results",[98,1140,1145],{"className":1141,"code":1143,"language":1144},[1142],"language-text","add(3, 5) = 8\nsubtract(10, 3) = 7\n","text",[19,1146,1143],{"__ignoreMap":103},[574,1148,1150],{"id":1149},"example-2module-class","Example 2：Module + Class",[15,1152,1153],{},[30,1154,1155,1156],{},"File: ",[19,1157,1158],{},"person_module.cppm",[98,1160,1162],{"className":100,"code":1161,"language":102,"meta":103,"style":103},"export module person;\n\nimport \u003Cstring>;\nimport \u003Ciostream>;\n\nexport class Person\n{\n    std::string name_;\n    int age_;\npublic:\n    Person(const std::string& name, int age)\n        : name_(name), age_(age) {}\n\n    void print() const\n    {\n        std::cout \u003C\u003C name_ \u003C\u003C \", age \" \u003C\u003C age_ \u003C\u003C \"\\n\";\n    }\n};\n",[19,1163,1164,1173,1177,1193,1206,1210,1220,1224,1231,1238,1243,1277,1294,1298,1312,1317,1349,1354],{"__ignoreMap":103},[107,1165,1166,1168,1170],{"class":109,"line":110},[107,1167,121],{"class":120},[107,1169,124],{"class":120},[107,1171,1172],{"class":127}," person;\n",[107,1174,1175],{"class":109,"line":117},[107,1176,138],{"emptyLinePlaceholder":137},[107,1178,1179,1182,1185,1188,1191],{"class":109,"line":134},[107,1180,1181],{"class":127},"import ",[107,1183,1184],{"class":120},"\u003C",[107,1186,1187],{"class":127},"string",[107,1189,1190],{"class":120},">",[107,1192,343],{"class":127},[107,1194,1195,1197,1199,1202,1204],{"class":109,"line":141},[107,1196,1181],{"class":127},[107,1198,1184],{"class":120},[107,1200,1201],{"class":127},"iostream",[107,1203,1190],{"class":120},[107,1205,343],{"class":127},[107,1207,1208],{"class":109,"line":170},[107,1209,138],{"emptyLinePlaceholder":137},[107,1211,1212,1214,1217],{"class":109,"line":176},[107,1213,121],{"class":120},[107,1215,1216],{"class":120}," class",[107,1218,1219],{"class":149}," Person\n",[107,1221,1222],{"class":109,"line":191},[107,1223,173],{"class":127},[107,1225,1226,1228],{"class":109,"line":197},[107,1227,938],{"class":149},[107,1229,1230],{"class":127},"::string name_;\n",[107,1232,1233,1235],{"class":109,"line":202},[107,1234,298],{"class":120},[107,1236,1237],{"class":127}," age_;\n",[107,1239,1240],{"class":109,"line":232},[107,1241,1242],{"class":120},"public:\n",[107,1244,1245,1248,1250,1253,1256,1259,1261,1264,1267,1269,1271,1274],{"class":109,"line":237},[107,1246,1247],{"class":149},"    Person",[107,1249,153],{"class":127},[107,1251,1252],{"class":120},"const",[107,1254,1255],{"class":149}," std",[107,1257,1258],{"class":127},"::",[107,1260,1187],{"class":149},[107,1262,1263],{"class":120},"&",[107,1265,1266],{"class":214}," name",[107,1268,218],{"class":127},[107,1270,156],{"class":120},[107,1272,1273],{"class":214}," age",[107,1275,1276],{"class":127},")\n",[107,1278,1279,1282,1285,1288,1291],{"class":109,"line":249},[107,1280,1281],{"class":127},"        : ",[107,1283,1284],{"class":149},"name_",[107,1286,1287],{"class":127},"(name), ",[107,1289,1290],{"class":149},"age_",[107,1292,1293],{"class":127},"(age) {}\n",[107,1295,1296],{"class":109,"line":254},[107,1297,138],{"emptyLinePlaceholder":137},[107,1299,1300,1303,1306,1309],{"class":109,"line":259},[107,1301,1302],{"class":120},"    void",[107,1304,1305],{"class":149}," print",[107,1307,1308],{"class":127},"() ",[107,1310,1311],{"class":120},"const\n",[107,1313,1314],{"class":109,"line":265},[107,1315,1316],{"class":127},"    {\n",[107,1318,1319,1322,1324,1326,1329,1331,1334,1336,1339,1341,1343,1345,1347],{"class":109,"line":274},[107,1320,1321],{"class":149},"        std",[107,1323,941],{"class":127},[107,1325,944],{"class":120},[107,1327,1328],{"class":127}," name_ ",[107,1330,944],{"class":120},[107,1332,1333],{"class":916}," \", age \"",[107,1335,950],{"class":120},[107,1337,1338],{"class":127}," age_ ",[107,1340,944],{"class":120},[107,1342,968],{"class":916},[107,1344,971],{"class":311},[107,1346,974],{"class":916},[107,1348,343],{"class":127},[107,1350,1351],{"class":109,"line":279},[107,1352,1353],{"class":127},"    }\n",[107,1355,1356],{"class":109,"line":290},[107,1357,1358],{"class":127},"};\n",[15,1360,1361],{},[30,1362,1155,1363],{},[19,1364,899],{},[98,1366,1368],{"className":100,"code":1367,"language":102,"meta":103,"style":103},"import person;\n\nint main()\n{\n    Person p(\"Alice\", 25);\n    p.print();\n\n    \u002F\u002F p.name_ = \"Bob\";  \u002F\u002F ❌ 编译错误！name_ 是 private\n\n    return 0;\n}\n",[19,1369,1370,1375,1379,1387,1391,1411,1422,1426,1434,1438,1446],{"__ignoreMap":103},[107,1371,1372],{"class":109,"line":110},[107,1373,1374],{"class":127},"import person;\n",[107,1376,1377],{"class":109,"line":117},[107,1378,138],{"emptyLinePlaceholder":137},[107,1380,1381,1383,1385],{"class":109,"line":134},[107,1382,156],{"class":120},[107,1384,284],{"class":149},[107,1386,287],{"class":127},[107,1388,1389],{"class":109,"line":141},[107,1390,173],{"class":127},[107,1392,1393,1396,1398,1400,1403,1405,1408],{"class":109,"line":170},[107,1394,1395],{"class":127},"    Person ",[107,1397,15],{"class":149},[107,1399,153],{"class":127},[107,1401,1402],{"class":916},"\"Alice\"",[107,1404,218],{"class":127},[107,1406,1407],{"class":311},"25",[107,1409,1410],{"class":127},");\n",[107,1412,1413,1416,1419],{"class":109,"line":176},[107,1414,1415],{"class":127},"    p.",[107,1417,1418],{"class":149},"print",[107,1420,1421],{"class":127},"();\n",[107,1423,1424],{"class":109,"line":191},[107,1425,138],{"emptyLinePlaceholder":137},[107,1427,1428,1431],{"class":109,"line":197},[107,1429,1430],{"class":113},"    \u002F\u002F p.name_ = \"Bob\";",[107,1432,1433],{"class":113},"  \u002F\u002F ❌ 编译错误！name_ 是 private\n",[107,1435,1436],{"class":109,"line":202},[107,1437,138],{"emptyLinePlaceholder":137},[107,1439,1440,1442,1444],{"class":109,"line":232},[107,1441,179],{"class":120},[107,1443,340],{"class":311},[107,1445,343],{"class":127},[107,1447,1448],{"class":109,"line":237},[107,1449,194],{"class":127},[15,1451,1452,639],{},[30,1453,1138],{},[98,1455,1458],{"className":1456,"code":1457,"language":1144},[1142],"Alice, age 25\n",[19,1459,1457],{"__ignoreMap":103},[574,1461,1463],{"id":1462},"example-3-on-the-basis-of-example-2-separate-the-interface-and-implementation","Example 3: On the basis of Example 2, separate the interface and implementation",[15,1465,1466],{},"For clarity, Examples 1 and 2 write the implementation directly within the module interface. In real-world projects, a more common practice is to have the interface unit only export declarations, while the implementation unit contains the function bodies.",[15,1468,1469,1475],{},[30,1470,1471,1472],{},"File 1: ",[19,1473,1474],{},"counter.cppm"," (Module Interface Unit)",[98,1477,1479],{"className":100,"code":1478,"language":102,"meta":103,"style":103},"export module counter;\n\nexport class Counter\n{\n    int value_ = 0;\n\npublic:\n    void add(int n);\n    int value() const;\n};\n",[19,1480,1481,1490,1494,1503,1507,1520,1524,1528,1543,1556],{"__ignoreMap":103},[107,1482,1483,1485,1487],{"class":109,"line":110},[107,1484,121],{"class":120},[107,1486,124],{"class":120},[107,1488,1489],{"class":127}," counter;\n",[107,1491,1492],{"class":109,"line":117},[107,1493,138],{"emptyLinePlaceholder":137},[107,1495,1496,1498,1500],{"class":109,"line":134},[107,1497,121],{"class":120},[107,1499,1216],{"class":120},[107,1501,1502],{"class":149}," Counter\n",[107,1504,1505],{"class":109,"line":141},[107,1506,173],{"class":127},[107,1508,1509,1511,1514,1516,1518],{"class":109,"line":170},[107,1510,298],{"class":120},[107,1512,1513],{"class":127}," value_ ",[107,1515,304],{"class":120},[107,1517,340],{"class":311},[107,1519,343],{"class":127},[107,1521,1522],{"class":109,"line":176},[107,1523,138],{"emptyLinePlaceholder":137},[107,1525,1526],{"class":109,"line":191},[107,1527,1242],{"class":120},[107,1529,1530,1532,1534,1536,1538,1541],{"class":109,"line":197},[107,1531,1302],{"class":120},[107,1533,150],{"class":149},[107,1535,153],{"class":127},[107,1537,156],{"class":120},[107,1539,1540],{"class":214}," n",[107,1542,1410],{"class":127},[107,1544,1545,1547,1550,1552,1554],{"class":109,"line":202},[107,1546,298],{"class":120},[107,1548,1549],{"class":149}," value",[107,1551,1308],{"class":127},[107,1553,1252],{"class":120},[107,1555,343],{"class":127},[107,1557,1558],{"class":109,"line":232},[107,1559,1358],{"class":127},[15,1561,1562,1567],{},[30,1563,896,1564],{},[19,1565,1566],{},"counter.cpp"," (Module Implementation Unit)",[98,1569,1571],{"className":100,"code":1570,"language":102,"meta":103,"style":103},"module counter;\n\nvoid Counter::add(int n)\n{\n    value_ += n;\n}\n\nint Counter::value() const\n{\n    return value_;\n}\n",[19,1572,1573,1580,1584,1605,1609,1620,1624,1628,1643,1647,1654],{"__ignoreMap":103},[107,1574,1575,1578],{"class":109,"line":110},[107,1576,1577],{"class":120},"module",[107,1579,1489],{"class":127},[107,1581,1582],{"class":109,"line":117},[107,1583,138],{"emptyLinePlaceholder":137},[107,1585,1586,1589,1592,1594,1597,1599,1601,1603],{"class":109,"line":134},[107,1587,1588],{"class":120},"void",[107,1590,1591],{"class":149}," Counter",[107,1593,1258],{"class":127},[107,1595,1596],{"class":149},"add",[107,1598,153],{"class":127},[107,1600,156],{"class":120},[107,1602,1540],{"class":214},[107,1604,1276],{"class":127},[107,1606,1607],{"class":109,"line":141},[107,1608,173],{"class":127},[107,1610,1611,1614,1617],{"class":109,"line":170},[107,1612,1613],{"class":127},"    value_ ",[107,1615,1616],{"class":120},"+=",[107,1618,1619],{"class":127}," n;\n",[107,1621,1622],{"class":109,"line":176},[107,1623,194],{"class":127},[107,1625,1626],{"class":109,"line":191},[107,1627,138],{"emptyLinePlaceholder":137},[107,1629,1630,1632,1634,1636,1639,1641],{"class":109,"line":197},[107,1631,156],{"class":120},[107,1633,1591],{"class":149},[107,1635,1258],{"class":127},[107,1637,1638],{"class":149},"value",[107,1640,1308],{"class":127},[107,1642,1311],{"class":120},[107,1644,1645],{"class":109,"line":202},[107,1646,173],{"class":127},[107,1648,1649,1651],{"class":109,"line":232},[107,1650,179],{"class":120},[107,1652,1653],{"class":127}," value_;\n",[107,1655,1656],{"class":109,"line":237},[107,1657,194],{"class":127},[15,1659,1660],{},[30,1661,1662,1663],{},"File 3: ",[19,1664,899],{},[98,1666,1668],{"className":100,"code":1667,"language":102,"meta":103,"style":103},"import counter;\n#include \u003Ciostream>\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    Counter c;\n    c.add(3);\n    c.add(5);\n\n    std::cout \u003C\u003C \"counter = \" \u003C\u003C c.value() \u003C\u003C \"\\n\";\n    \u002F\u002F 返回 0 表示程序正常结束。\n    return 0;\n}\n",[19,1669,1670,1675,1681,1685,1693,1697,1702,1707,1720,1732,1736,1766,1771,1779],{"__ignoreMap":103},[107,1671,1672],{"class":109,"line":110},[107,1673,1674],{"class":127},"import counter;\n",[107,1676,1677,1679],{"class":109,"line":117},[107,1678,21],{"class":120},[107,1680,917],{"class":916},[107,1682,1683],{"class":109,"line":134},[107,1684,138],{"emptyLinePlaceholder":137},[107,1686,1687,1689,1691],{"class":109,"line":141},[107,1688,156],{"class":120},[107,1690,284],{"class":149},[107,1692,287],{"class":127},[107,1694,1695],{"class":109,"line":170},[107,1696,173],{"class":127},[107,1698,1699],{"class":109,"line":176},[107,1700,1701],{"class":113},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[107,1703,1704],{"class":109,"line":191},[107,1705,1706],{"class":127},"    Counter c;\n",[107,1708,1709,1712,1714,1716,1718],{"class":109,"line":197},[107,1710,1711],{"class":127},"    c.",[107,1713,1596],{"class":149},[107,1715,153],{"class":127},[107,1717,312],{"class":311},[107,1719,1410],{"class":127},[107,1721,1722,1724,1726,1728,1730],{"class":109,"line":202},[107,1723,1711],{"class":127},[107,1725,1596],{"class":149},[107,1727,153],{"class":127},[107,1729,317],{"class":311},[107,1731,1410],{"class":127},[107,1733,1734],{"class":109,"line":232},[107,1735,138],{"emptyLinePlaceholder":137},[107,1737,1738,1740,1742,1744,1747,1749,1752,1754,1756,1758,1760,1762,1764],{"class":109,"line":237},[107,1739,938],{"class":149},[107,1741,941],{"class":127},[107,1743,944],{"class":120},[107,1745,1746],{"class":916}," \"counter = \"",[107,1748,950],{"class":120},[107,1750,1751],{"class":127}," c.",[107,1753,1638],{"class":149},[107,1755,1308],{"class":127},[107,1757,944],{"class":120},[107,1759,968],{"class":916},[107,1761,971],{"class":311},[107,1763,974],{"class":916},[107,1765,343],{"class":127},[107,1767,1768],{"class":109,"line":249},[107,1769,1770],{"class":113},"    \u002F\u002F 返回 0 表示程序正常结束。\n",[107,1772,1773,1775,1777],{"class":109,"line":254},[107,1774,179],{"class":120},[107,1776,340],{"class":311},[107,1778,343],{"class":127},[107,1780,1781],{"class":109,"line":259},[107,1782,194],{"class":127},[15,1784,1785,639],{},[30,1786,1138],{},[98,1788,1791],{"className":1789,"code":1790,"language":1144},[1142],"counter = 8\n",[19,1792,1790],{"__ignoreMap":103},[10,1794,1796],{"id":1795},"runtime-results","runtime results",[15,1798,1799],{},"See the \"running results\" for each example above.",[10,1801,1803],{"id":1802},"key-syntax-explanation-in-the-example","Key syntax explanation in the example",[15,1805,1806],{},"|Here is the translation of the provided Simplified Chinese Markdown fragment into natural American English, following all specified rules.",[1808,1809],"hr",{},[360,1811,1812,1833],{},[363,1813,1814],{},[366,1815,1816,1821,1824,1827,1830],{},[369,1817,1818],{"align":371},[30,1819,1820],{},"Example",[369,1822,1823],{"align":371},"Discusses what",[369,1825,1826],{"align":371},"Newly emerged syntax",[369,1828,1829],{"align":371},"Why write it this way",[369,1831,1832],{"align":371},"Precautions",[377,1834,1835,1861,1886],{},[366,1836,1837,1840,1843,1852,1855],{},[382,1838,1839],{"align":371},"Example 1",[382,1841,1842],{"align":371},"Basic Module Definitions and Imports",[382,1844,1845,1847,1848,1847,1850],{"align":371},[19,1846,431],{},"、",[19,1849,462],{},[19,1851,121],{},[382,1853,1854],{"align":371},"The module only exposes the exported content.",[382,1856,1857,1858,1860],{"align":371},"There is no strict rule for module file naming; ",[19,1859,87],{}," is a community convention.",[366,1862,1863,1866,1869,1877,1880],{},[382,1864,1865],{"align":371},"Example 2",[382,1867,1868],{"align":371},"Export a class from a module.",[382,1870,1871,1847,1874],{"align":371},[19,1872,1873],{},"export class",[19,1875,1876],{},"import \u003Cstring>",[382,1878,1879],{"align":371},"The public\u002Fprivate access modifiers in classes remain effective.",[382,1881,1882,1885],{"align":371},[19,1883,1884],{},"import \u003Cheader>"," belongs to header units, and toolchain support for them varies significantly.",[366,1887,1888,1891,1894,1899,1902],{},[382,1889,1890],{"align":371},"Example 3",[382,1892,1893],{"align":371},"Separation of interface unit and implementation unit",[382,1895,1896],{"align":371},[19,1897,1898],{},"module counter;",[382,1900,1901],{"align":371},"The interface only exposes declarations, with implementations placed in separate files.",[382,1903,1904],{"align":371},"When building a system, module dependencies need to be known.",[10,1906,1908],{"id":1907},"common-errors","Common Errors",[15,1910,1911],{},[30,1912,1913],{},"Error 1: Compiler Not Supported or Not Enabled",[98,1915,1917],{"className":1050,"code":1916,"language":1052,"meta":103,"style":103},"g++ -std=c++17 main.cpp  # ❌ C++17 没有 modules\n",[19,1918,1919],{"__ignoreMap":103},[107,1920,1921,1923,1926,1928],{"class":109,"line":110},[107,1922,1064],{"class":149},[107,1924,1925],{"class":311}," -std=c++17",[107,1927,1104],{"class":916},[107,1929,1930],{"class":113},"  # ❌ C++17 没有 modules\n",[15,1932,1933,1934,1937,1938,1941],{},"Correct approach: Use ",[19,1935,1936],{},"-std=c++20 -fmodules-ts"," (GCC\u002FClang), use ",[19,1939,1940],{},"\u002Fstd:c++20"," for MSVC.",[15,1943,1944],{},[30,1945,1946,1947],{},"Error 2: Forgot ",[19,1948,121],{},[98,1950,1952],{"className":100,"code":1951,"language":102,"meta":103,"style":103},"\u002F\u002F module.cppm\nexport module my_module;\nint func() { return 42; }  \u002F\u002F ❌ 没有 export，外部看不到！\n",[19,1953,1954,1959,1968],{"__ignoreMap":103},[107,1955,1956],{"class":109,"line":110},[107,1957,1958],{"class":113},"\u002F\u002F module.cppm\n",[107,1960,1961,1963,1965],{"class":109,"line":117},[107,1962,121],{"class":120},[107,1964,124],{"class":120},[107,1966,1967],{"class":127}," my_module;\n",[107,1969,1970,1972,1975,1978,1981,1984,1987],{"class":109,"line":134},[107,1971,156],{"class":120},[107,1973,1974],{"class":149}," func",[107,1976,1977],{"class":127},"() { ",[107,1979,1980],{"class":120},"return",[107,1982,1983],{"class":311}," 42",[107,1985,1986],{"class":127},"; }",[107,1988,1989],{"class":113},"  \u002F\u002F ❌ 没有 export，外部看不到！\n",[15,1991,1992,1993],{},"Correct approach: ",[19,1994,1995],{},"export int func() { return 42; }",[15,1997,1998],{},[30,1999,2000],{},"Error 3: Compilation order is incorrect",[15,2002,2003,2004,2006],{},"You must first compile the module interface unit (",[19,2005,87],{},") before compiling the files that use the module.",[15,2008,2009],{},"Proper approach: Use CMake 3.28+ or a build system to manage module dependencies.",[15,2011,2012],{},[30,2013,2014],{},"Error 4: Mistaking 'private' for the entirety of module hiding",[98,2016,2018],{"className":100,"code":2017,"language":102,"meta":103,"style":103},"export module demo;\n\nexport class A\n{\nprivate:\n    int value_;\n};\n\nint helper(); \u002F\u002F 没有 export，外部看不到\n",[19,2019,2020,2029,2033,2042,2046,2051,2057,2061,2065],{"__ignoreMap":103},[107,2021,2022,2024,2026],{"class":109,"line":110},[107,2023,121],{"class":120},[107,2025,124],{"class":120},[107,2027,2028],{"class":127}," demo;\n",[107,2030,2031],{"class":109,"line":117},[107,2032,138],{"emptyLinePlaceholder":137},[107,2034,2035,2037,2039],{"class":109,"line":134},[107,2036,121],{"class":120},[107,2038,1216],{"class":120},[107,2040,2041],{"class":149}," A\n",[107,2043,2044],{"class":109,"line":141},[107,2045,173],{"class":127},[107,2047,2048],{"class":109,"line":170},[107,2049,2050],{"class":120},"private:\n",[107,2052,2053,2055],{"class":109,"line":176},[107,2054,298],{"class":120},[107,2056,1653],{"class":127},[107,2058,2059],{"class":109,"line":191},[107,2060,1358],{"class":127},[107,2062,2063],{"class":109,"line":197},[107,2064,138],{"emptyLinePlaceholder":137},[107,2066,2067,2069,2072,2075],{"class":109,"line":202},[107,2068,156],{"class":120},[107,2070,2071],{"class":149}," helper",[107,2073,2074],{"class":127},"();",[107,2076,2077],{"class":113}," \u002F\u002F 没有 export，外部看不到\n",[15,2079,2080,2083,2084,2086],{},[19,2081,2082],{},"private"," governs class member access permissions; ",[19,2085,121],{}," determines whether module-level names are visible externally. They address different problems.",[10,2088,2089],{"id":2089},"使用建议",[590,2091,2092,2095,2098,2101,2104],{},[27,2093,2094],{},"明确目标：在开始前确定您的具体需求，以便选择最合适的工具或教程。",[27,2096,2097],{},"充分利用资源：参考官方文档、教程和博客，这些资料能帮助您快速上手并解决问题。",[27,2099,2100],{},"实践应用：通过动手操作项目或编写代码来巩固学习成果，提升实际操作能力。",[27,2102,2103],{},"问题解决：遇到困难时，查阅参考资料或寻求社区支持，逐步培养独立解决问题的能力。",[27,2105,2106],{},"分享经验：完成项目后，可以撰写文章或博客分享心得，帮助其他学习者。",[15,2108,2109],{},"如果需要针对特定领域（如单片机、机器人或环境搭建）的进一步建议，请提供更多信息，我将为您细化内容。",[24,2111,2112,2121,2127,2135,2144,2150],{},[27,2113,2114,2117,2118,2120],{},[30,2115,2116],{},"Currently optional but not required for migration",": Compiler support for C++20 modules is still evolving, and traditional ",[19,2119,21],{}," will remain mainstream for a considerable period.",[27,2122,2123,2126],{},[30,2124,2125],{},"New projects can try",": If using the latest compilers (GCC 15+, Clang 17+, MSVC 2022+), modules are now relatively stable.",[27,2128,2129,43,2132,1041],{},[30,2130,2131],{},"CMake 3.28+ supports modules",[19,2133,2134],{},"target_sources(myapp PUBLIC FILE_SET CXX_MODULES FILES ...)",[27,2136,2137,2143],{},[30,2138,2139,2140,2142],{},"The standard library module ",[19,2141,76],{}," is a C++23 feature",": C++20 only allows importing custom modules.",[27,2145,2146,2149],{},[30,2147,2148],{},"Understanding the design philosophy of modules is crucial",": they represent the future direction of C++.",[27,2151,2152,2155],{},[30,2153,2154],{},"Learn concepts in tutorials, don't force-memorize commands",": Compiler-specific module commands vary greatly; for actual projects, it's more stable to let CMake\u002Fbuild systems handle them.",[10,2157,2159],{"id":2158},"summary","Summary",[590,2161,2162,2168,2177,2185,2188,2191],{},[27,2163,2164,2165,2167],{},"Modules are the new compilation model in C++20, replacing ",[19,2166,21],{}," to be faster and safer.",[27,2169,2170,2171,2173,2174,2176],{},"Declare the module name with ",[19,2172,431],{},", and use ",[19,2175,121],{}," to mark declarations as publicly visible.",[27,2178,2179,2181,2182,2184],{},[19,2180,462],{}," import module (alternative to ",[19,2183,21],{},").",[27,2186,2187],{},"The module interface unit is responsible for exposing the API, while the module implementation unit is responsible for hiding the implementation.",[27,2189,2190],{},"Compiler support is continuously being improved. You can explore it, but its use in current projects requires evaluation.",[27,2192,2193],{},"Studying the design of modules helps in understanding modular thinking in large C++ projects.",[2195,2196,2197],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":103,"searchDepth":117,"depth":117,"links":2199},[2200,2201,2202,2203,2204,2205,2206,2210,2215,2216,2217,2218,2219],{"id":12,"depth":117,"text":13},{"id":59,"depth":117,"text":60},{"id":69,"depth":117,"text":70},{"id":80,"depth":117,"text":81},{"id":95,"depth":117,"text":96},{"id":357,"depth":117,"text":358},{"id":447,"depth":117,"text":450,"children":2207},[2208,2209],{"id":576,"depth":134,"text":577},{"id":630,"depth":134,"text":631},{"id":746,"depth":117,"text":747,"children":2211},[2212,2213,2214],{"id":750,"depth":134,"text":751},{"id":1149,"depth":134,"text":1150},{"id":1462,"depth":134,"text":1463},{"id":1795,"depth":117,"text":1796},{"id":1802,"depth":117,"text":1803},{"id":1907,"depth":117,"text":1908},{"id":2089,"depth":117,"text":2089},{"id":2158,"depth":117,"text":2159},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","2000-2100","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","en-us:2023-10-05-cplusplus-jiao-xue","\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介",false,null,"en-US","en-us",{},{"title":5,"description":103},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","ybM0j20IRA0scd7rRsJnQO_-HrKWes1u6ZWIohH6gog",[2239,2245,2250,2255,2260,2265,2270,2275,2280,2285,2290,2295,2300,2305,2310,2315,2320,2325,2330,2335,2340,2345,2350,2355,2360,2365,2370,2375,2380,2385,2390,2395,2400,2405,2410,2415,2420,2425,2430,2435,2440,2445,2450,2455,2460,2465,2470,2475,2480,2485,2490,2495,2500,2505,2510,2515,2520,2525,2530,2535,2540,2545,2546,2551,2556,2561,2566,2571,2576,2581,2586,2591,2596,2601,2606,2611,2616,2621,2626,2631,2636,2641],{"path":2240,"stem":2241,"title":2242,"date":2222,"chapterOrder":2243,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++ Development Environment Setup and Testing","0100",0,{"path":2246,"stem":2247,"title":2248,"date":2222,"chapterOrder":2249,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++ Basics","0200",{"path":2251,"stem":2252,"title":2253,"date":2222,"chapterOrder":2254,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","Data Types and Data Storage","0300",{"path":2256,"stem":2257,"title":2258,"date":2222,"chapterOrder":2259,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","Input and Output","0400",{"path":2261,"stem":2262,"title":2263,"date":2222,"chapterOrder":2264,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","operator","0500",{"path":2266,"stem":2267,"title":2268,"date":2222,"chapterOrder":2269,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","program flow structure","0600",{"path":2271,"stem":2272,"title":2273,"date":2222,"chapterOrder":2274,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":2276,"stem":2277,"title":2278,"date":2222,"chapterOrder":2279,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","Functions and Header Files","0800",{"path":2281,"stem":2282,"title":2283,"date":2222,"chapterOrder":2284,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":2286,"stem":2287,"title":2288,"date":2222,"chapterOrder":2289,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","Structures and Unions","1000",{"path":2291,"stem":2292,"title":2293,"date":2222,"chapterOrder":2294,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","Memory Partitioning and Lifecycle","1100",{"path":2296,"stem":2297,"title":2298,"date":2222,"chapterOrder":2299,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":2301,"stem":2302,"title":2303,"date":2222,"chapterOrder":2304,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","Advanced Functions and Namespaces","1300",{"path":2306,"stem":2307,"title":2308,"date":2222,"chapterOrder":2309,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","encapsulation","1400-0100",{"path":2311,"stem":2312,"title":2313,"date":2222,"chapterOrder":2314,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","Object initialization and cleanup","1400-0200",{"path":2316,"stem":2317,"title":2318,"date":2222,"chapterOrder":2319,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","Object Model and the `this` Pointer","1400-0300",{"path":2321,"stem":2322,"title":2323,"date":2222,"chapterOrder":2324,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","Friends and operator overloading","1400-0400",{"path":2326,"stem":2327,"title":2328,"date":2222,"chapterOrder":2329,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","inheritance","1400-0500",{"path":2331,"stem":2332,"title":2333,"date":2222,"chapterOrder":2334,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","polymorphism","1400-0600",{"path":2336,"stem":2337,"title":2338,"date":2222,"chapterOrder":2339,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","Classes and Objects","1400",{"path":2341,"stem":2342,"title":2343,"date":2222,"chapterOrder":2344,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","File operations","1500",{"path":2346,"stem":2347,"title":2348,"date":2222,"chapterOrder":2349,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":2351,"stem":2352,"title":2353,"date":2222,"chapterOrder":2354,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","template","1700",{"path":2356,"stem":2357,"title":2358,"date":2222,"chapterOrder":2359,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","Introduction to STL","1800-0100",{"path":2361,"stem":2362,"title":2363,"date":2222,"chapterOrder":2364,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":2366,"stem":2367,"title":2368,"date":2222,"chapterOrder":2369,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string container","1800-0300",{"path":2371,"stem":2372,"title":2373,"date":2222,"chapterOrder":2374,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":2376,"stem":2377,"title":2378,"date":2222,"chapterOrder":2379,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":2381,"stem":2382,"title":2383,"date":2222,"chapterOrder":2384,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":2386,"stem":2387,"title":2388,"date":2222,"chapterOrder":2389,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue container","1800-0700",{"path":2391,"stem":2392,"title":2393,"date":2222,"chapterOrder":2394,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":2396,"stem":2397,"title":2398,"date":2222,"chapterOrder":2399,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":2401,"stem":2402,"title":2403,"date":2222,"chapterOrder":2404,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":2406,"stem":2407,"title":2408,"date":2222,"chapterOrder":2409,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","Function objects and predicates","1800-1100",{"path":2411,"stem":2412,"title":2413,"date":2222,"chapterOrder":2414,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","Common algorithms","1800-1200",{"path":2416,"stem":2417,"title":2418,"date":2222,"chapterOrder":2419,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","Level up your programming with STL.","1800",{"path":2421,"stem":2422,"title":2423,"date":2222,"chapterOrder":2424,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++ Type Casting","1900",{"path":2426,"stem":2427,"title":2428,"date":2222,"chapterOrder":2429,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":2431,"stem":2432,"title":2433,"date":2222,"chapterOrder":2434,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":2436,"stem":2437,"title":2438,"date":2222,"chapterOrder":2439,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":2441,"stem":2442,"title":2443,"date":2222,"chapterOrder":2444,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":2446,"stem":2447,"title":2448,"date":2222,"chapterOrder":2449,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","range-based for loop","2000-0500",{"path":2451,"stem":2452,"title":2453,"date":2222,"chapterOrder":2454,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","structured binding","2000-0600",{"path":2456,"stem":2457,"title":2458,"date":2222,"chapterOrder":2459,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":2461,"stem":2462,"title":2463,"date":2222,"chapterOrder":2464,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":2466,"stem":2467,"title":2468,"date":2222,"chapterOrder":2469,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","Smart pointer","2000-0900",{"path":2471,"stem":2472,"title":2473,"date":2222,"chapterOrder":2474,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","Rvalue references and move semantics","2000-1000",{"path":2476,"stem":2477,"title":2478,"date":2222,"chapterOrder":2479,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda expression","2000-1100",{"path":2481,"stem":2482,"title":2483,"date":2222,"chapterOrder":2484,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":2486,"stem":2487,"title":2488,"date":2222,"chapterOrder":2489,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":2491,"stem":2492,"title":2493,"date":2222,"chapterOrder":2494,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":2496,"stem":2497,"title":2498,"date":2222,"chapterOrder":2499,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":2501,"stem":2502,"title":2503,"date":2222,"chapterOrder":2504,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":2506,"stem":2507,"title":2508,"date":2222,"chapterOrder":2509,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":2511,"stem":2512,"title":2513,"date":2222,"chapterOrder":2514,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":2516,"stem":2517,"title":2518,"date":2222,"chapterOrder":2519,"chapterDepth":117,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread and join","2000-1900-0100",{"path":2521,"stem":2522,"title":2523,"date":2222,"chapterOrder":2524,"chapterDepth":117,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":2526,"stem":2527,"title":2528,"date":2222,"chapterOrder":2529,"chapterDepth":117,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":2531,"stem":2532,"title":2533,"date":2222,"chapterOrder":2534,"chapterDepth":117,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":2536,"stem":2537,"title":2538,"date":2222,"chapterOrder":2539,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","Concurrent programming","2000-1900",{"path":2541,"stem":2542,"title":2543,"date":2222,"chapterOrder":2544,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":2220,"stem":2236,"title":5,"date":2222,"chapterOrder":2221,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},{"path":2547,"stem":2548,"title":2549,"date":2222,"chapterOrder":2550,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","Modern C++","2000",{"path":2552,"stem":2553,"title":2554,"date":2222,"chapterOrder":2555,"chapterDepth":117,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","Timers and Asynchronous I\u002FO","2100-0100-0100",{"path":2557,"stem":2558,"title":2559,"date":2222,"chapterOrder":2560,"chapterDepth":117,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio Basics","2100-0100-0200",{"path":2562,"stem":2563,"title":2564,"date":2222,"chapterOrder":2565,"chapterDepth":117,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","serial communication","2100-0100-0300",{"path":2567,"stem":2568,"title":2569,"date":2222,"chapterOrder":2570,"chapterDepth":117,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP communication","2100-0100-0400",{"path":2572,"stem":2573,"title":2574,"date":2222,"chapterOrder":2575,"chapterDepth":117,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP communication","2100-0100-0500",{"path":2577,"stem":2578,"title":2579,"date":2222,"chapterOrder":2580,"chapterDepth":117,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","Robot Engineering Approach and ROS2 Integration","2100-0100-0600",{"path":2582,"stem":2583,"title":2584,"date":2222,"chapterOrder":2585,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio asynchronous IO library","2100-0100",{"path":2587,"stem":2588,"title":2589,"date":2222,"chapterOrder":2590,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen linear algebra library","2100-0200",{"path":2592,"stem":2593,"title":2594,"date":2222,"chapterOrder":2595,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV Computer Vision Library","2100-0300",{"path":2597,"stem":2598,"title":2599,"date":2222,"chapterOrder":2600,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL Point Cloud Library","2100-0400",{"path":2602,"stem":2603,"title":2604,"date":2222,"chapterOrder":2605,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus Lie group and Lie algebra library","2100-0500",{"path":2607,"stem":2608,"title":2609,"date":2222,"chapterOrder":2610,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","Learning Common Libraries","2100",{"path":2612,"stem":2613,"title":2614,"date":2222,"chapterOrder":2615,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets and Build Installation","2200-0100",{"path":2617,"stem":2618,"title":2619,"date":2222,"chapterOrder":2620,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","Top-level CMake and Public Compilation Options","2200-0200",{"path":2622,"stem":2623,"title":2624,"date":2222,"chapterOrder":2625,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","Detailed CMake Explanation for src and lib Modules","2200-0300",{"path":2627,"stem":2628,"title":2629,"date":2222,"chapterOrder":2630,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","How to write third-party library dependencies","2200-0400",{"path":2632,"stem":2633,"title":2634,"date":2222,"chapterOrder":2635,"chapterDepth":110,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","Template Extensions and FAQ","2200-0500",{"path":2637,"stem":2638,"title":2639,"date":2222,"chapterOrder":2640,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":2229},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake Project Template","2200",{"path":2225,"stem":2642,"title":2643,"date":2222,"chapterOrder":2230,"chapterDepth":2244,"docKey":2224,"docRoot":2225,"docTitle":2226,"isWikiDoc":137,"isWikiIndex":137},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":2645},[2646,2647,2650,2653,2656],{"path":2220,"localeSlug":2232,"i18nKey":2228},{"path":2648,"localeSlug":2649,"i18nKey":2228},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","zh-hant",{"path":2651,"localeSlug":2652,"i18nKey":2228},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","zh-hk",{"path":2654,"localeSlug":2655,"i18nKey":2228},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","zh-tw",{"path":2657,"localeSlug":2658,"i18nKey":2228},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","zh-cn",[2220,2235,2648,2235,2651,2235,2654,2235,2657,2235],1784646870120]