因此,我在我的x64 bit win10pro 10.0.17134上创建了一个带有wsl的c++ linux控制台应用程序。
该项目编译时没有任何问题,也没有显示任何错误。并且调试基本变量赋值如预期的那样工作;
然后,当我尝试包含任何stl库时,例如
我得到以下错误
我正在使用x64位模式的调试配置。我也试着用谷歌搜索这个错误,但我似乎找不到任何相关的答案
我还尝试使用不同的c++版本(c++17、c++11等)。但我仍然得到相同的错误。
但是,即使我得到了这些编译错误,程序仍然可以正确运行。
发布于 2018-10-03 03:37:57
编译器和标准库是不同的东西。
您看到的是一个不支持128位整数的编译器,它试图使用需要支持128位整数的std库。
问题可能是Intelisense的问题,Intelisense不知道你的编译器支持128位整数,或者无法正确排除它或其他什么。您的图像显示您同时看到了构建和Intelisense错误;如果构建成功,这意味着这些都是Intelisense错误。
Intelisense是一个MSVC工具,它试图解析并确定您的C++代码中是否有错误。它不使用您的编译器;相反,它使用快速的第三方编译器。
关闭Intelisense可能是摆脱这些问题的最简单方法。训练Intelisense以获得它所理解的“适当的”头是可能的,但相当困难,而且可能是一个多年的程序员项目。
一个简单的方法就是把你的
预编译头和do
#ifdef __INTELLISENSE__
using __float128 = long double; // or some fake 128 bit floating point type
#endif
但这可能是一个无休止的螺旋。
还有一些方法可以告诉intellisense忽略某些文件中的错误。
发布于 2020-02-20 20:30:50
如果它与您的其余代码不冲突,则可以设置
在项目属性|配置属性> C/C++ > IntelliSense |预处理器定义中
这是如果您使用的是GCC标头。对于其他来源,开关可能会有所不同。
发布于 2020-12-06 05:02:16
作为提示,您可以将错误输出设置为Build Only。它默认是Build + Intellisense,正如上面的答案所示,这不一定是您想要的。
https://stackoverflow.com/questions/52599677
复制相似问题