Visual Studio Code下macOS使用std_lib_facilities.h编译C++报错
问题根因
std_lib_facilities.h是《C程序设计原理与实践》配套的工具头文件,新版头文件大量使用了C11引入的语法特性:包括警告中提到的using类型别名,以及触发编译错误的uniform_int_distribution<>{}统一列表初始化语法。
而macOS系统默认的编译器(无论是原生clang还是g++)默认使用C98标准进行编译,无法识别上述C11语法,因此触发了4个相关警告和1个编译错误。
解决方法
单次手动编译修复
执行编译命令时额外添加C标准指定参数即可,推荐使用C11或更高版本标准:
cd "/Users/Ramsan/Praxis/" && g++ yup.cpp -o yup -std=c++11 && "/Users/Ramsan/Praxis/"yup
如果要使用更新的语法特性,也可以将-std=c++11替换为-std=c++17,兼容性更好。
VS Code永久配置修复
如果不想每次手动加参数,可以修改VS Code的C++编译配置:
- 打开VS Code的命令面板(快捷键
Command+Shift+P),搜索并选择Tasks: Configure Default Build Task,找到对应C++编译的任务配置 - 在配置的
args数组中添加"-std=c++11"参数,修改后的参数示例参考:
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: g++ 生成活动文件", "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-std=c++11" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true } } ], "version": "2.0.0" }
- 保存配置后重新运行程序即可正常编译。
内容的提问来源于stack exchange,提问作者r0mzk
相关产品推荐
相关产品推荐

