在 Visual Studio linux c++ 项目中包含任何 stl 库时出现“此配置不支持 128 位浮点类型”错误

big*_*d12 6 c++ g++ visual-studio windows-subsystem-for-linux c++17

所以我用 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 等...),但我仍然遇到相同的错误。

但即使我收到这些编译错误,程序仍然可以正常运行。

Yak*_*ont 5

编译器和标准库是不同的东西。

您所看到的是一个不支持 128 位整数的编译器尝试使用需要支持 128 位整数的 std 库。

问题可能是 Intelisense 问题,Intelisense 不知道您的编译器支持 128 位整数,或者无法正确排除它或其他问题。您的图像显示您同时看到 Build 和 Intelisense 错误;如果构建成功,则意味着这些是 Intelisense 错误。

Intelisense 是 MSVC 工具,它尝试解析并确定 C++ 代码中是否存在错误。它不使用您的编译器;相反,它使用快速的第三方编译器。

关闭 Intelisense 可能是解决这些问题的最简单方法。训练 Intelisense 以获得它理解的“正确”标头是可能的,但相当困难,并且可能是一个许多程序员年的项目。

一个快速的方法是获取stdafx.h预编译头,然后执行

#ifdef __INTELLISENSE__ 
using __float128 = long double; // or some fake 128 bit floating point type
#endif
Run Code Online (Sandbox Code Playgroud)

但这可能是一个无休止的螺旋。

可能还有一些方法可以告诉智能感知忽略某些文件中的错误。