【发布时间】:2016-03-27 13:24:06
【问题描述】:
我有以下代码:
template<int FORMAT>
int double_to_bulk(double value,
char* buf,
double max_num,
int* state = NULL)
{
if (isnan(value))
{
//Something to do
return 1;
}
//Something more to do
}
还有奇怪的编译错误:
myfile.h: 在函数'int double_to_bulk(double, char*, double, int*)':
myfile.h:351:错误:“isnan”没有参数 依赖于模板参数,因此必须声明“isnan” 可用
myfile.h:351: error: (如果你使用'-fpermissive',G++ 会 接受您的代码,但允许使用未声明的名称 已弃用)
但是我真的不想用-fpermissive
我使用gcc 4.1.2,相当老,但与它无关。为什么在模板函数中使用isnan会出现问题?
【问题讨论】:
-
在 C99 中它以宏的形式存在。是的,它根本没有定义。我只是被这种奇怪的编译器消息弄糊涂了。