首页 > 解决方案 > 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

标签: c++macosc++11visual-studio-code

解决方案


如果您遵循有关为 macOS C++ 开发设置 clang 的 vscode 教程,您将遇到设置默认构建任务的问题。

本教程将指导您生成一个 tasks.json,然后让您将其内容替换为它自己的示例。此初始任务使用 C++17 编译。

然后它会指导您生成一个用于调试的 launch.json。此时发生的是调试器任务在 tasks.json 中生成自己的任务并将其设置为默认值。

这个新的默认任务缺少使用 C++11/14/17 编译的 args,std_lib_facilities.h 需要 C++11。当 vscode 运行构建时,它使用了错误的任务。


推荐阅读