在 visual studio linux c++ 项目中包含任何 stl 库时出现“此配置不支持 128 位浮点类型”错误
"128-bit floating-point types are not supported in this configuration" error when including any stl library in visual studio linux c++ project
所以我使用 wsl 在我的 x64 位 win 10 pro 10.0.17134 上创建了一个 c++ linux 控制台应用程序。
项目编译没有问题,没有显示任何错误。调试基本变量赋值按预期工作;
然后当我尝试包含任何 stl 库时,例如#include <iostream>
我收到以下错误
128-bit floating-point types are not supported in this configuration
我正在使用 x64 位模式的调试配置。
我也试过谷歌搜索错误,但我似乎找不到任何相关的答案
我也尝试过使用不同的 c++ 版本(c++17、c++11 等...),但我仍然遇到相同的错误。
但即使我遇到这些编译错误,程序仍然可以正常运行。
编译器和标准库是不同的东西。
您看到的是一个不支持 128 位整数的编译器试图使用需要支持 128 位整数的标准库。
问题可能是 Intelisense 问题,其中 Intelisense 不知道您的编译器支持 128 位整数或无法正确排除它或其他原因。您的图片显示您看到了 Build 和 Intelisense 错误;如果构建成功,则表示这些是 Intelisense 错误。
Intelisense 是 MSVC 工具,它会尝试解析并确定您的 C++ 代码中是否存在错误。它不使用您的编译器;相反,它使用快速的第 3 方编译器。
关闭 Intelisense 可能是摆脱这些问题的最简单方法。训练 Intelisense 使其理解“正确的”headers 是可能的,但相当困难,并且可能需要很多 programmer-year 项目。
一个快速的破解方法是将您的 stdafx.h
预编译 header,然后执行
#ifdef __INTELLISENSE__
using __float128 = long double; // or some fake 128 bit floating point type
#endif
但这可能是一个无休止的螺旋。
可能还有一些方法可以让智能感知忽略某些文件中的错误。
如果和你其他的代码不冲突,你可以设置
__CUDACC__
在
项目属性 |配置属性 > C/C++ > 智能感知 |预处理器定义
如果您使用的是 GCC headers。其他来源的开关可能不同。
作为提示,您可以将错误输出设置为仅构建。默认是Build + Intellisense,正如上面的答案所示,不一定是你想要的。
所以我使用 wsl 在我的 x64 位 win 10 pro 10.0.17134 上创建了一个 c++ linux 控制台应用程序。
项目编译没有问题,没有显示任何错误。调试基本变量赋值按预期工作;
然后当我尝试包含任何 stl 库时,例如#include <iostream>
我收到以下错误
128-bit floating-point types are not supported in this configuration
我正在使用 x64 位模式的调试配置。 我也试过谷歌搜索错误,但我似乎找不到任何相关的答案
我也尝试过使用不同的 c++ 版本(c++17、c++11 等...),但我仍然遇到相同的错误。
但即使我遇到这些编译错误,程序仍然可以正常运行。
编译器和标准库是不同的东西。
您看到的是一个不支持 128 位整数的编译器试图使用需要支持 128 位整数的标准库。
问题可能是 Intelisense 问题,其中 Intelisense 不知道您的编译器支持 128 位整数或无法正确排除它或其他原因。您的图片显示您看到了 Build 和 Intelisense 错误;如果构建成功,则表示这些是 Intelisense 错误。
Intelisense 是 MSVC 工具,它会尝试解析并确定您的 C++ 代码中是否存在错误。它不使用您的编译器;相反,它使用快速的第 3 方编译器。
关闭 Intelisense 可能是摆脱这些问题的最简单方法。训练 Intelisense 使其理解“正确的”headers 是可能的,但相当困难,并且可能需要很多 programmer-year 项目。
一个快速的破解方法是将您的 stdafx.h
预编译 header,然后执行
#ifdef __INTELLISENSE__
using __float128 = long double; // or some fake 128 bit floating point type
#endif
但这可能是一个无休止的螺旋。
可能还有一些方法可以让智能感知忽略某些文件中的错误。
如果和你其他的代码不冲突,你可以设置
__CUDACC__
在
项目属性 |配置属性 > C/C++ > 智能感知 |预处理器定义
如果您使用的是 GCC headers。其他来源的开关可能不同。
作为提示,您可以将错误输出设置为仅构建。默认是Build + Intellisense,正如上面的答案所示,不一定是你想要的。