在 MacOS 上的 Visual Studio Code 中C++ - std::make_unique

C++ in Visual Studio Code on MacOS - std::make_unique

本文关键字:std make unique C++ 上的 MacOS Visual Studio Code      更新时间:2023-10-16

我正在运行MacOS 10.15,在与Visual Studio 2019重新启动到BootCamp Win10数月后,我决定尝试使用C++和Code Runner扩展的VS Code。可悲的是,我很快就遇到了内置操作系统(或使用开发人员工具下载,我不知道(的过时版本的C++的麻烦。

我试图运行简单的std::make_unique<T>但我得到的回应是

error: no member named 'make_unique' in namespace 'std'

这是我的代码:

#include <memory>
#include <vector>

class Pole{
Pole(size_t chunk=100): chunk_(chunk), count_(0) {}
public:
void push_back(int item){
if(count_ % chunk_ == 0){
v_.push_back(std::make_unique< int[]>(chunk_));  //this is the problematic line
}
count_++;
v_[count_/chunk_][count_%chunk_]=item;
}

private:
size_t chunk_;
size_t count_;
std::vector<std::unique_ptr<int[]> > v_;
};

我已经尝试在c_cpp_properties.json中玩"cppStandard":并将其值设置为"cppStandard": "c++20",但它没有帮助。

谢谢!

  1. 打开 Visual Studio Code。
  2. 打开项目的文件夹。
  3. 将下面的.vscode/c_cpp_properties.json编译器路径和属性替换为:

-

"intelliSenseMode": "clang-x64",
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++17"

所以它看起来有点类似于:

{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"macFrameworkPath": [
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"intelliSenseMode": "clang-x64",
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++20"
}
],
"version": 4
}

下一个打开./vscode/tasks.json,对于commandargs,指定:

"command": "clang++",
"args": [
"-std=c++17",
"-stdlib=libc++",
"${workspaceFolder}/main.cpp",
"-o",
"${workspaceFolder}/main.out",
"--debug"
]

两个重要的参数是:

"-std=c++17",
"-stdlib=libc++"

其余的你可以离开你拥有它的方式。

现在你应该能够为 C++17 建造。点击Command + Shift + B进行构建,F5Fn + F5运行/调试。

尝试在控制台中编译代码。也许您的 VSCode 配置不正确。我有类似的问题.. 无论如何,请尝试使用以下方法编译代码:

$ clang++ -Wall -std=c++17 foo.cpp -o foo

如果需要,这将为您提供警告,并使用 C++17 标准进行编译。