c++ - Visual Studio 代码 std_lib_facilities.h C++ 中的错误
问题描述
我正在用这本书学习C++,它有这个头文件。当我尝试运行一个简单的“Hello, world!”时 程序编译器抱怨并给我这个输出。我正在使用最新的 macOS。有人可以帮我吗?
[Running] cd "/Users/Ramsan/Praxis/" && g++ yup.cpp -o yup && "/Users/Ramsan/Praxis/"yup
In file included from yup.cpp:1:
/Users/Ramsan/std_lib_facilities.h:71:20: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using size_type = typename std::vector<T>::size_type;
^
/Users/Ramsan/std_lib_facilities.h:101:20: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using size_type = std::string::size_type;
^
/Users/Ramsan/std_lib_facilities.h:218:73: error: expected '(' for function-style cast or type construction
inline int randint(int min, int max) { return uniform_int_distribution<>{min, max}(get_rand()); }
~~~~~~~~~~~~~~~~~~~~~~~~~~^
/Users/Ramsan/std_lib_facilities.h:227:20: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using Value_type = typename C::value_type;
^
/Users/Ramsan/std_lib_facilities.h:230:18: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using Iterator = typename C::iterator;
^
4 warnings and 1 error generated.
[Done] exited with code=1 in 0.795 seconds
解决方案
如果您遵循有关为 macOS C++ 开发设置 clang 的 vscode 教程,您将遇到设置默认构建任务的问题。
本教程将指导您生成一个 tasks.json,然后让您将其内容替换为它自己的示例。此初始任务使用 C++17 编译。
然后它会指导您生成一个用于调试的 launch.json。此时发生的是调试器任务在 tasks.json 中生成自己的任务并将其设置为默认值。
这个新的默认任务缺少使用 C++11/14/17 编译的 args,std_lib_facilities.h 需要 C++11。当 vscode 运行构建时,它使用了错误的任务。
推荐阅读
- image-processing - 在 Octave 的图像包中是否有另一种方法来计算 regionprops.Solidity 中的 Solidity?
- javascript - 为什么手动调整 Visjs 时间线图的高度(可调整大小)不起作用?
- c# - 从 Blazor WebAssembly 客户端项目中的 GetFromJsonAsync 调用接收 Blazor 服务器项目中 API 方法中的参数
- android - 无法使用应用程序上下文翻译字符串
- azure-active-directory - 本地 Web API 2 授权不使用 Azure 身份令牌
- java - 是否可以为 android 中长数据类型元素的 Edittext 设置文本
- c# - Asp.Net Core - 读取文件
- reactjs - 如何在反应中使用 API 调用测试组件?
- android - Android JobIntentService 在循环之间停止
- python - Jupyter中的格式化表