c++ VSCode“变体不是模板”,如何让vscode检测出来?

vawmfj5a  于 2023-01-22  发布在  Vscode
关注(0)|答案(3)|浏览(202)

我正在编写一个简单的结构在使用vscode在c++

#include <variant>
using namespace std;
struct Entry {
  string name;
  variant<double,int> v;
};

我使用的是C/C++ extension by Microsoft
尽管它编译得很好,但不知何故,扩展无法检测到variant类。
如何解决VScode的这个问题?

qij5mzcb

qij5mzcb1#

找到了!

  • 转到扩展〉C/C ++〉齿轮图标〉扩展设置
  • 在上部搜索栏中添加"标准"
  • 查找"C_Cpp〉默认值:cpp标准"条目。
  • 点击下拉列表并选择您需要的最高c++标准。
  • 重新加载,错误消失。

C中的这类问题也是如此。
看起来这个扩展的默认c++标准有时是不够的。

c3frrgcw

c3frrgcw2#

对于使用cl.execonfiguring Microsoft C++上的VSCode指南)编译和链接C/C++程序的用户:

  • 查找.vscode/task.json
  • "/std:c++latest"添加到args列表中。
  • 点击Ctrl + Shift + B进行构建。

Developer Command Prompt for VS XXXX中键入cl.exe /help可以找到有关cl.exe的更多选项。

disho6za

disho6za3#

如果您使用的是clangd扩展名而不是Microsoft的C++扩展名,则应将其添加到.vscode/settings.json文件中:

{
    "clangd.fallbackFlags": [
        "-std=c++17"
    ]
}

编辑文件后,请确保重新加载扩展以应用更改。

相关问题