问题描述:
在把VC6.0 工程转到VS2005工程中可能会遇到下面的问题
VS2005中,数学函数的参数检查更为严格,如pow(2, 45)会引起一个错误提示如下:
error C2668: “pow”: 对重载函数的调用不明确
d:\program files\microsoft visual studio 8\vc\include\math.h(575): 可能是“long double pow(long double,int)”
d:\program files\microsoft visual studio 8\vc\include\math.h(527): 或“float pow(float,int)”
d:\program files\microsoft visual studio 8\vc\include\math.h(489): 或“double pow(double,int)”
试图匹配参数列表“(int, int)”时
解决方法:
在把VC6.0 工程转到VS2005工程中可能会遇到下面的问题
VS2005中,数学函数的参数检查更为严格,如pow(2, 45)会引起一个错误提示如下:
error C2668: “pow”: 对重载函数的调用不明确
d:\program files\microsoft visual studio 8\vc\include\math.h(575): 可能是“long double pow(long double,int)”
d:\program files\microsoft visual studio 8\vc\include\math.h(527): 或“float pow(float,int)”
d:\program files\microsoft visual studio 8\vc\include\math.h(489): 或“double pow(double,int)”
试图匹配参数列表“(int, int)”时
解决方法:
正确的使用为pow(2.0, 45) 或
pow有多个函数,未知明确匹配哪 一个,你必须明确使用哪种数据类型来计算。
例如这样:pow((double)2,2) 或 pow(4.,5.)pow((float)(a % 10), 3) 同理sqrt函数也一样的道理: sqrt((float)a);
http://www.vcerror.com/?p=1577