MSVC编译器可以使用80位浮点数吗?

问题描述 投票:0回答:2

我正在使用带有 MSVC 编译器的 Visual Studio。基本上任何其他编译器似乎都支持 x86/x64 CPU 的本机 80 位浮点,除了 MSVC。似乎解决方法是使用内联汇编器,但显然 MSVC 在 64 位模式下也不支持此功能。

是否有可能将我的 CPU 的 80 位浮点功能与 MSCV 结合使用?性能是最高优先级的,因此任何软件解决方案都是不可能的。可移植性不是问题,因为我只会在 Windows x64 机器上使用我的代码。

c++ visual-c++ floating-point
2个回答
0
投票

你的问题的答案是否定的(MSVC 是一个例外,

long double
double
的同义词);来源:维基百科

对于 Windows,如那里所述,您可以将 MSVC IDE 配置为使用 Intel C++ 编译器,根据上述源代码,如果使用

/Qlong‑double
开关,该编译器支持 80 位双精度。


0
投票

MSVC 编译器可以使用 80 位浮点数吗?

不幸的是,答案是“不”

从第一天起,我们就被告知,标准类型使用的底层类型,例如

int
long long int
long double
,是特定于实现的。我们被警告说,即使在同一编译器的两个版本之间,实现也可能会发生变化。例如,早在 20 世纪 80 年代,微软就将
int
实现为 16 位类型,这是他们应该做的。当时,Intel 的微处理器具有 16 位字长。后来,随着处理器的发展,微软转向了 32 位
int

今天,不幸的是,微软冻结了它的类型定义。即使硬件支持,微软也不会为我们提供 128 位整数和 80 位浮点数(或更大)。

© www.soinside.com 2019 - 2024. All rights reserved.