既然isnan可以是宏(在C++ 98中)或在命名空间std中定义的函数(在C++ 11中),这个简单的例子说明了编写在两种情况下都有效的代码的明显(并且可能是天真的)方式.

#include

int main() {

double x = 0;

using namespace std;

isnan(x);

}

但是,编译它会在GCC(使用-std = c ++ 11)和Clang中产生错误:

test.cc: In function ‘int main()’:

test.cc:6:10: error: call of overloaded ‘isnan(double&)’ is ambiguous

isnan(x);

^

test.cc:6:10: note: candidates are:

In file included from /usr/include/features.h:374:0,

from /usr/include/x86_64-linux-gnu/c++/4.8/bits/os_defines.h:39,

from /usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h:426,

from /usr/include/c++/4.8/cmath:41,

from test.cc:1:

/usr/include/x86_64-linux-gnu/bits/mathcalls.h:234:1: note: int isnan(double)

__MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));

^

In file included from test.cc:1:0:

/usr/include/c++/4.8/cmath:626:3: note: constexpr bool std::isnan(long double)

isnan(long double __x)

^

/usr/include/c++/4.8/cmath:622:3: note: constexpr bool std::isnan(double)

isnan(double __x)

^

/usr/include/c++/4.8/cmath:618:3: note: constexpr bool std::isnan(float)

isnan(float __x)

^

为什么在C++ 11中这是不明确的,以及如何使它适用于C++ 98和C++ 11,最好不需要太多的条件编译?

isnan函数 linux,为什么isnan含糊不清以及如何避免它?相关推荐

  1. (转)isnan函数matlab

    转 isnan函数matlab 2018年06月12日 22:00:04 甲虫ss 阅读数 1669 isnan函数:判断数组的元素是否是NaN.(Not a Number) matlab中出现NaN ...

  2. isnan 函数 -javascript1.1

    JavaScript中isNaN函数方法是返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字). 使用方法: isNaN(numValue) 其中必选项 numvalue 参数 ...

  3. js判断是否是数字——isNaN()函数

    今天使用isNaN()函数判断是否是数字时遇到的问题,当变量是空串时,isNaN()的返回值还是false,但空串却不是数据,查了一下,才知道原来isNaN()把空串或空格作0处理的. isNaN 返 ...

  4. isnan函数返回值c语言,C++ std::isnan等函数的使用

    C和C++11标准提供了类似于isnan.isfinite.isinf.isnormal.fpclassify分别用于判断是非数(NaN)值.有限制.无穷值.正常数值等. 今天在使用Modbus读取设 ...

  5. java中isnan函数_isNaN()函数以及JavaScript中的示例

    java中isnan函数 Prerequisite: NaN property in JavaScript 先决条件: JavaScript中的NaN属性 isNaN()函数 (isNaN() fun ...

  6. clickhouse查询NaN使用isNaN函数处理

    问题查询clickhouse 使用avg()等函数指定条件查询不到数据返回NaN数据 一开始处理-只可以解决整数问题 利用case when then else end处理 出现问题假若value有值 ...

  7. isnumeric java_IsNumeric 判断字符串是否为数字(使用Val函数实现),这个函数相当于Java的IsNaN函数...

    IsNumeric 判断字符串是否为数字,如果是数字返回true,如果包含有汉字或字符的话返回false. 由于Delphi本身没有IsNumeric这个函数,不像其它语言,这个函数相当于Java的I ...

  8. matlab中isnan函数

    isnan函数:判断数组的元素是否是NaN.(Not a Number) matlab中出现NaN的情况: 任何关于NaN的运算, 加减法:(+inf)+(-inf) 乘法:0*inf 除法:0/0: ...

  9. JavaScript isNaN() 函数

    JavaScript isNaN() 函数 返回 JavaScript 全局对象参考手册 定义和用法 isNaN() 函数用于检查其参数是否是非数字值. 语法 isNaN(x)参数 描述 x 必需.要 ...

最新文章

  1. KS012基于SSM实现个人记账管理系统
  2. 测量大脑的快速光信号可以加快BCI响应
  3. oracle not available
  4. Hibernate映射详解(二)--多对一,一对多单向,一对多双向关联映射
  5. 成功解决raise XGBoostError(_LIB.XGBGetLastError()) xgboost.core.XGBoostError: b'[22:08:00] C:\\Users\\Ad
  6. java的多线程实现方式_java 多线程实现方式
  7. Java黑皮书课后题第3章:*3.33(金融:比较成本)假设你要通过两种不同的包裹运输大米。你可能会编写一个程序来比较成本,该程序提示用户输入每个包裹的重量和价格,然后显示具有更优惠的包裹
  8. Java GC原理简单讲解
  9. 《测试驱动开发》读书笔记
  10. 不看就亏系列!这里有完整的 Hadoop 集群搭建教程,和最易懂的 Hadoop 概念!| 附代码...
  11. Mybatis if 判断等于一个字符串
  12. wps嵌入字体后也不改变_冬至后的君子兰,养护方式要改变,不然过年不开花
  13. 在属性级情感分析中结合BERT和语法信息
  14. 计算机通过华为手机上网,华为手机usb共享电脑的网络怎么办
  15. 转换YV12到RGB565图像转换,附YUV转RGB测试
  16. 苹果开发者关联封号扫盲贴
  17. CNN(卷积神经网络)的深度
  18. 一首光辉岁月的歌词,送给自己
  19. 第一代电子计算机使用的逻辑部件是( ),第一代电子计算机使用的逻辑部件是
  20. python实现大数定理

热门文章

  1. CentOS之——tar.xz结尾的文件的解压方法
  2. Python - time模块详解
  3. 网站中常见的验证码方式总结
  4. 斗兽棋概要设计说明书
  5. 关于java语言的发展前景
  6. potplayer恢复默认配置
  7. delayQueue实现订单超时自动取消
  8. 带你了解一下reac框架
  9. 智慧司法三维可视化决策系统平台(数字孪生)-解决方案开发案例
  10. Python——模块(Module)和包(Package)