# ERRATA — 代码修正记录 本文件由 `tools/gen_part1.py` 自动生成,记录对 wiki 原始代码块的每一处修正。 格式:`[pageId:blockIdx]` 类型 → 原内容 → 修正后 → 依据。 ## [58954439:3] illegal-in-function - **原文**:`namespace 定义 / 命名空间作用域成员函数定义 写在函数体内(void test(){ namespace A{...} })` - **修正**:`把 namespace 块与成员定义提升到文件作用域,test() 仅使用其成员` - **依据**:C++ 不允许在函数体内定义 namespace 或其成员函数;标准要求它们处于全局/命名空间作用域。原 wiki 写法无法编译;提升后保留教学意图。 ## [58954439:6] illegal-in-function - **原文**:`namespace 定义 / 命名空间作用域成员函数定义 写在函数体内(void test(){ namespace A{...} })` - **修正**:`把 namespace 块与成员定义提升到文件作用域,test() 仅使用其成员` - **依据**:C++ 不允许在函数体内定义 namespace 或其成员函数;标准要求它们处于全局/命名空间作用域。原 wiki 写法无法编译;提升后保留教学意图。 ## [58954439:7] illegal-in-function - **原文**:`namespace 定义 / 命名空间作用域成员函数定义 写在函数体内(void test(){ namespace A{...} })` - **修正**:`把 namespace 块与成员定义提升到文件作用域,test() 仅使用其成员` - **依据**:C++ 不允许在函数体内定义 namespace 或其成员函数;标准要求它们处于全局/命名空间作用域。原 wiki 写法无法编译;提升后保留教学意图。 ## [58954439:14] removed-feature - **原文**:`K&R 隐式 int(int fun1(i)、g(){...})及无类型参数 fun3() 接受任意实参` - **修正**:`显式 int(int fun1(int i)、int g(void){...}),fun2 形参显式为 char*,fun3() → fun3(void)、调用改为 fun3()(C17 不允许向 (void) 函数传参)` - **依据**:隐式 int 与无类型/可变参数在 C99 起被废除,C17 不可编译。原始 C89 形式仍可由 tools/std_probe.py 与 tools/demo_versions/kr_implicit_int.c 在 -std=c89 下演示。 ## [58954439:24] missing-symbol - **原文**:`const Person 演示引用 Person,但 Person 定义在另一小节(拆分为独立文件后丢失)` - **修正**:`在本块顶部补一个最小 Person 定义(age 带默认成员初始化,使 const 对象可默认构造)` - **依据**:原 wiki 把 Person 定义与 const 演示放在同节、本应同文件;按「示例相对隔离」拆开后本块自洽编译所需的最小前置定义。const 聚合对象需默认成员初始化才能默认构造(C++17)。 ## [58954439:38] syntax - **原文**:`class Person{...}(末尾缺分号)` - **修正**:`class Person{...};` - **依据**:C++ 类/结构体定义后必须有分号。 ## [58954439:41] illegal-in-function - **原文**:`namespace A/B 定义(含重载集 MyFunc)写在函数体内(void test(){ namespace A{...} })` - **修正**:`把 namespace 块提升到文件作用域,test() 通过 A::/B:: 调用各重载` - **依据**:C++ 不允许在函数体内定义 namespace;标准要求其处于全局/命名空间作用域。原 wiki 写法无法编译;提升后保留重载集演示意图。 ## [58954439:42] ambiguous-overload - **原文**:`main 中 MyFunc("hello") 在 MyFunc(string) 与 MyFunc(string,int=10) 间二义,无法编译` - **修正**:`注释保留二义调用作说明,main 只显式调用双参重载(单参形式因二义不可调用)` - **依据**:函数重载遇上默认参数时,编译器无法在两个可行候选间抉择(二义性)。即使强转 std::string 也无法消除——两候选对单个 string 实参同等匹配。原文意在演示此现象,作为可运行示例只能保留可调用的双参形式并注释说明二义点。 ## [58954439:46] missing-definition - **原文**:`main 调用 func1()/func2(),但本文件仅有 extern "C" 声明(定义在配对的 MyModule.c)` - **修正**:`在本文件就地补 func1/func2 的 extern "C" 定义(最小实现)` - **依据**:原 wiki 把声明与定义分属两文件;按「示例相对隔离」拆分为独立目标后,本文件缺少定义导致链接失败。补最小实现使其自洽可运行,保留 extern "C" 声明的教学意图。 ## [58954448:0] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954451:0] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954451:1] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954451:2] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954451:3] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954451:7] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954451:8] pseudo-code - **原文**:`new Person / malloc / 构造函数(中文散文混入语句,不可编译)` - **修正**:`可编译对照程序:new vs malloc+placement new,散文转注释` - **依据**:原文是对照式伪代码(含「相当于:」「构造函数」等中文散文),无法编译。改为可编译的 new 与 malloc 行为对照(用 placement new 对齐构造语义)。 ## [58954451:9] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954451:11] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954451:12] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954451:13] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954456:1] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954456:2] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954456:3] const-correctness - **原文**:`const 成员函数 ChangePerson() const 内修改非 mutable 成员 mAge(mAge = 100)` - **修正**:`注释掉对 mAge 的修改,保留对 mutable mID 的修改,并加注释说明` - **依据**:const 成员函数承诺不修改对象的逻辑状态,故不得修改非 mutable 数据成员;mID 被 mutable 修饰例外。原写法在 C++17 下编译报错。 ## [58954457:0] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954458:3] typo - **原文**:`;(全角分号)` - **修正**:`;(半角)` - **依据**:全角分号在 C/C++ 中非法,统一替换为半角。 ## [58954458:3] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954458:4] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954461:0] prose-in-code - **原文**:`class IndexPage 前混入孤立中文散文词「网页类」(非注释非代码)` - **修正**:`把该散文行转为注释` - **依据**:wiki 正文标题词被误纳入代码块,C++ 无法解析;转为注释保留教学上下文。 ## [58954461:9] typo - **原文**:`“(全角引号)` - **修正**:`"(半角)` - **依据**:字符串/字符字面量须用半角引号。 ## [58954461:9] typo - **原文**:`”(全角引号)` - **修正**:`"(半角)` - **依据**:字符串/字符字面量须用半角引号。 ## [58954469:5] abstract-instantiation - **原文**:`test() 中 B b; 试图实例化抽象类 B(B 有纯虚析构函数 virtual ~B()=0)` - **修正**:`注释掉 B b; 并加说明(B 是抽象类不可实例化),A a; 保留` - **依据**:含纯虚函数(含纯虚析构函数)的类是抽象类,C++ 禁止创建其对象。原文此处正是演示该约束,但作为可编译示例需把非法构造注释化。 ## [58954472:5] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954472:9] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954472:10] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954472:11] prose-in-code - **原文**:`「测试代码:」中文散文词 + 文件作用域裸语句(MyArray myArrayInt(10);、for 循环、Push_back 调用等)直接铺在类定义之后,无函数包裹` - **修正**:`删除散文词,把测试驱动语句包进 main(),保留 MyArray 模板 + Person 类 + 打印函数` - **依据**:C++ 不允许在文件作用域直接写可执行语句(如 for 循环、函数调用);中文散文词亦非法。原文是把「使用示例」当散文铺排;重写为可编译运行的单文件程序,保留类模板应用的教学意图。 ## [58954473:2] syntax - **原文**:`//int b = const_cast(a); }(闭合花括号误入注释行)` - **修正**:`把 } 移出注释作为 test01() 的正常闭合花括号` - **依据**:原 wiki 把 test01() 的闭合 } 误写进注释,导致函数体未结束、后续 test02() 被嵌套在 test01() 内,C++ 禁止函数内定义函数。 ## [58954474:1] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954474:2] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954474:3] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954474:4] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954474:4] removed-feature - **原文**:`动态异常规范 throw(int,char,char*) 与 throw()(C++17 已移除)` - **修正**:`throw() → noexcept;throw(类型...) → noexcept(false),并注释说明旧语义` - **依据**:动态异常规范在 C++11 弃用、C++17 移除,C++17 下是语法错误。throw() 的等价物是 noexcept;带类型列表的动态规范无法在现代 C++ 中精确表达,用 noexcept(false) 近似(表示可能抛异常)。旧规范演示见 tools/demo_versions/dynamic_exception_spec.cpp(在 -std=c++14 下编译)。 ## [58954474:7] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954474:8] override-noexcept - **原文**:`MyOutOfRange::what() const 重写 exception::what() 但缺 noexcept` - **修正**:`补 noexcept(virtual const char* what() const noexcept)` - **依据**:C++11 起 std::exception::what() 声明为 noexcept;重写函数的异常规范不得比基类更宽松,必须同样 noexcept,否则 C++17 编译报「looser exception specification」。原 wiki 写于旧标准,未带 noexcept。 ## [58954476:0] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954476:1] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954476:2] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include , ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954476:3] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954476:3] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include , ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954476:4] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954476:4] missing-include - **原文**:`调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:C 字符串/内存函数声明在 (C++)/ (C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。 ## [58954476:4] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954476:4] missing-default-ctor - **原文**:`Person 只有 Person(char*,int) 构造,但二进制读取用 Person p3; 默认构造` - **修正**:`补一个空的默认构造 Person(){}` - **依据**:二进制文件读取需先默认构造一个占位对象再 read() 填充;原 Person 无默认构造,C++17 报「no matching function for call to Person::Person()」。 ## [58954487:0] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954487:0] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954488:1] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954488:1] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954488:2] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954488:2] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include , ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954488:3] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954488:3] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include , ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954488:4] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954488:4] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954488:4] implementation-specific - **原文**:`直接访问 MSVC STL 私有成员 _Nodeptr/_Myhead/_Next/_Myval/_Mysize(演示 list 节点结构)` - **修正**:`改用标准迭代器遍历,以注释图示说明环形双向链表结构` - **依据**:MSVC STL 的下划线大写成员是实现细节,libstdc++ 无等价物,跨编译器不可移植。C++ 标准不暴露容器内部节点结构;原写法仅在 MSVC 下可编译。改用标准接口 + 图示注释保留教学意图。 ## [58954488:5] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954488:5] const-comparator - **原文**:`set 的排序仿函数 MyCompare02/MyCompare03 的 operator() 非 const` - **修正**:`给两个 operator() 加 const 修饰` - **依据**:C++14 起,关联容器(set/map)的比较对象必须可 const 调用(标准要求 Compare 对象满足 invocable as const)。原 wiki 的非 const operator() 在 C++17 libstdc++ 下触发 static_assert。 ## [58954488:6] platform - **原文**:`system("pause")` - **修正**:`pause()` - **依据**:system("pause") 仅 Windows 可用;改用仓库提供的便携 pause() 壳函数 (读一行 stdin 等待回车),行为一致,Linux 可编译运行。 ## [58954488:6] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include , , ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954498:1] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include , ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954498:2] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include , , ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954498:3] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include , , ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954498:4] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include , ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。 ## [58954498:5] missing-include - **原文**:`使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include , ` - **修正**:`由生成模板统一补 #include ` - **依据**:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。