tru*_*ruf 4 c visual-studio-2022
我有一个用纯 C 编写的旧遗留代码。它是跨平台的。我需要在其中定义一个 NaN 常量。我的方法是:
const double _NAN = 0.0/0.0;
不幸的是,当我尝试在 Win 机器(VS 2022)上构建代码时,我得到了"error C2124: divide or mod by zero".
我很确定 MSVC 编译器有一个参数可以禁用它,但这是一个公共项目,MS VS 只是可用于构建它的 IDE 之一。我不想要求用户更改特定环境中的默认设置。
我想我可以使用 NaN 的十六进制值,但假设我将面对字节序...这意味着我需要以可移植的方式检测字节序。
有没有更好的选择以跨平台方式在 C 中为 double 定义 NaN?
您可以包含<math.h>并使用NAN. C 1999 和 C 2018 7.12 5 都说:
宏观
NAN当且仅当实现支持该
float类型的安静 NaN 时才定义。float它扩展为表示安静 NaN类型的常量表达式。
您可以将它用于类型double,并且,如果您想要处理 C 实现未定义它的情况,您可以使用 进行测试#if defined NAN。
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |