【问题标题】:Error in Visual Studio Code std_lib_facilities.h C++Visual Studio 代码 std_lib_facilities.h C++ 中的错误
【发布时间】:2021-12-22 11:39:46
【问题描述】:

我正在使用具有此头文件的 book 学习 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++ 标准版本的较旧(1998 或 2003)修订版。您必须调整其中一个 JSON 配置文件,以指示编译器至少使用 C++11 修订版。希望更熟悉 VS Code 的人很快会来为您指出一个重复的问题。
  • 您需要编辑tasks.jsonc_cpp_properties.json。 VSCode 文档在这里,它向您展示了如何启用 c++17:https://code.visualstudio.com/docs/cpp/config-clang-mac
  • 我已经多次关注该文档,但我得到了相同的结果。无论如何,您如何更新clang?更新Xcode的时候不是会自动更新吗?

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    相关资源
    最近更新 更多