Files
scuc-qt-course/docs/ERRATA.md
T
张宗平 13b3ebbe14 课程代码仓库初始化:Part1 (144) + Part3 (29) 全量生成与验证
把川大 wiki「02.Qt方向」课程代码整理为 CMake 管理的可编译运行项目。

Part1 C/C++ 强化 (p01/, 144 目标, host gcc/g++ 构建, 全绿):
- 修复全部编译失败:补 <cstring>/<fstream>/<iomanip>/<vector> 等缺失头
  (common_fix + infer_stl_includes 自动检测注入)、修正 pause() 壳注入
  (改检测已转换后的 pause 调用)、namespace 提升出函数体、const 成员函数
  正确性、dedupe 不再破坏函数重载集、K&R 隐式 int / 动态异常规范等
  C++17 移除特性的可编译等价改写。
- 目录采用深缩写 p01/ch04/s03/ (原 part1_cpp/ch04_class_object/03_ctor_dtor)。

Part3 Qt 桌面 (p03/, 29 目标, 隔离 Qt 5.14.2 构建, 全绿):
- gen_part3.py: Qt 外壳模板 (main+QApplication+show, QTimer 自动退出便于
  offscreen 验证)、AUTOMOC + .moc include、rewrite_* 处理散文混入/重载/
  资源依赖、生成占位 png/gif + .qrc + rundata 样例数据。
- 修正 QLable 笔误、全角分号、.→->、Windows 路径、QApplication 阻塞事件
  循环改为 QCoreApplication 等。

任务1 概念/版本验证:
- tools/std_probe.py: 跨 -std= 编译探针 (--pedantic-errors 让已废除特性硬失败)。
- tools/demo_versions/: K&R 隐式 int、三目左值、void* 转换、enum 赋整、
  const 经指针、动态异常规范 共 6 个跨版本演示。
- docs/VERSION_NOTES.md: 每条「原文说法→C17/C++17 是否成立→何版本成立→已验证」。

文档: 顶层 README、docs/SOURCE_PAGES.md (页面→目录映射)、
docs/ERRATA.md (Part1 修正)、docs/ERRATA_part3.md (Part3 修正)。
另修复 tools/run.sh / run_qt.sh 的 ${1:?...} 引号语法 bug。

隔离 Qt 验证: ldd 0 系统 Qt 引用; 173/173 目标全绿; p03 offscreen 运行通过。
2026-06-30 14:16:55 +08:00

26 KiB
Raw Blame History

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 隐式 intint fun1(i)、g(){...})及无类型参数 fun3() 接受任意实参
  • 修正显式 intint 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 <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。

[58954451:0] missing-include

  • 原文调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。

[58954451:1] missing-include

  • 原文使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include <algorithm>
  • 修正由生成模板统一补 #include <algorithm>
  • 依据:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。

[58954451:2] missing-include

  • 原文使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include <algorithm>
  • 修正由生成模板统一补 #include <algorithm>
  • 依据:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。

[58954451:3] missing-include

  • 原文调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。

[58954451:7] missing-include

  • 原文调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>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 <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。

[58954451:11] missing-include

  • 原文调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。

[58954451:12] missing-include

  • 原文调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>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 成员 mAgemAge = 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 <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。

[58954458:4] missing-include

  • 原文调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>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<int> myArrayInt(10);、for 循环、Push_back 调用等)直接铺在类定义之后,无函数包裹
  • 修正删除散文词,把测试驱动语句包进 main(),保留 MyArray 模板 + Person 类 + 打印函数
  • 依据:C++ 不允许在文件作用域直接写可执行语句(如 for 循环、函数调用);中文散文词亦非法。原文是把「使用示例」当散文铺排;重写为可编译运行的单文件程序,保留类模板应用的教学意图。

[58954473:2] syntax

  • 原文//int b = const_cast<int>(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() → noexceptthrow(类型...) → 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
  • 修正补 noexceptvirtual 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 <string>
  • 修正由生成模板统一补 #include <string>
  • 依据:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。

[58954476:1] missing-include

  • 原文调用 strcpy/strlen/strcmp 等 C 字符串函数但未 #include <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。

[58954476:2] missing-include

  • 原文使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include <algorithm>, <iomanip>
  • 修正由生成模板统一补 #include <algorithm> <iomanip>
  • 依据:原 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 <fstream>, <string>
  • 修正由生成模板统一补 #include <fstream> <string>
  • 依据:原 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 <cstring>
  • 修正由生成模板统一补 #include <cstring>
  • 依据:C 字符串/内存函数声明在 C++/ <string.h>C);原 wiki 代码依赖教学环境传递包含,隔离编译时须显式 include。

[58954476:4] missing-include

  • 原文使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include <fstream>
  • 修正由生成模板统一补 #include <fstream>
  • 依据:原 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 <vector>
  • 修正由生成模板统一补 #include <vector>
  • 依据:原 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 <vector>
  • 修正由生成模板统一补 #include <vector>
  • 依据:原 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 <algorithm>, <vector>
  • 修正由生成模板统一补 #include <algorithm> <vector>
  • 依据:原 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 <algorithm>, <vector>
  • 修正由生成模板统一补 #include <algorithm> <vector>
  • 依据:原 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 <list>
  • 修正由生成模板统一补 #include <list>
  • 依据:原 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 <set>
  • 修正由生成模板统一补 #include <set>
  • 依据:原 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 <algorithm>, <map>, <vector>
  • 修正由生成模板统一补 #include <algorithm> <map> <vector>
  • 依据:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。

[58954498:1] missing-include

  • 原文使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include <algorithm>, <vector>
  • 修正由生成模板统一补 #include <algorithm> <vector>
  • 依据:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。

[58954498:2] missing-include

  • 原文使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include <algorithm>, <functional>, <vector>
  • 修正由生成模板统一补 #include <algorithm> <functional> <vector>
  • 依据:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。

[58954498:3] missing-include

  • 原文使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include <algorithm>, <functional>, <vector>
  • 修正由生成模板统一补 #include <algorithm> <functional> <vector>
  • 依据:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。

[58954498:4] missing-include

  • 原文使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include <algorithm>, <vector>
  • 修正由生成模板统一补 #include <algorithm> <vector>
  • 依据:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。

[58954498:5] missing-include

  • 原文使用 STL/IO 符号(如 vector/for_each/ifstream/setw 等)但未 #include <algorithm>, <vector>
  • 修正由生成模板统一补 #include <algorithm> <vector>
  • 依据:原 wiki 代码假定教学环境已传递包含相应标准库头;按「示例相对隔离」独立编译时须显式 include。检测依据为符号使用(见 gen_sources.infer_stl_includes)。