在 MacOS 上的 Visual Studio Code 中C++ - std::make_unique
C++ in Visual Studio Code on MacOS - std::make_unique
我正在运行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"
,但它没有帮助。
谢谢!
- 打开 Visual Studio Code。
- 打开项目的文件夹。
- 将下面的
.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
,对于command
和args
,指定:
"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
进行构建,F5
或Fn + F5
运行/调试。
尝试在控制台中编译代码。也许您的 VSCode 配置不正确。我有类似的问题.. 无论如何,请尝试使用以下方法编译代码:
$ clang++ -Wall -std=c++17 foo.cpp -o foo
如果需要,这将为您提供警告,并使用 C++17 标准进行编译。
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- std::向量与传递值的动态数组
- 使用std::vector的OpenCL矩阵乘法
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- std::condition_variable::wait()如何评估给定的谓词
- 如何获取std::result_of函数的返回类型
- std::原子加载和存储都需要吗
- 将对象移动到std::shared_ptr
- 如何摆脱导入的 make 项目中的 Eclipse 索引器"Type std::... could not be resolved"错误
- Make zmqpp::socket::connect a std::future
- 为什么是 std::make_unique 而不是 std::unique_ptr::make?
- Travis ci make -std=c++14无法识别
- const decltype(*std::begin(container))& val dont make val const?
- make and std::logic_error