C/CPP, 编程

关于Visual Studio C LANG下pow()函数的重载

pow

当初看到Visual Studio 2010的这个提示,我真当VS实现了C LANG的函数重载。

今天即兴尝试VS下C LANG的函数重载,虽然IDE没报语法错误,但编译器编译时会报错。无奈之下只好打开长长的math.h一探究竟。

通过全文搜索很容易找到math.h声明的pow()原型:

声明的这些原型一眼看上去没什么问题,挺正常的重载方式。不过math.h内容有点多,不细心点还是看不出来,实际上pow()的重载使用了条件编译:

查找了一下资料,得知”__cplusplus”是CPP下才有的预定义宏,毕竟”C Plus Plus”……

也就是说,编译C LANG的情况下,仅有这个原型起作用:

其他的重载用的原型根本就不会被编译。

 

这下结论明确,C LANG根本没有函数重载,那就更加别谈对pow()的重载了,只是IDE对条件编译的检测不完善,才有本文首图的那种提示。

最后自己弄一个伪函数重载玩玩:

 

(91 Posts)

自信、努力、活出精彩;以前未所见的颜色,绘大千世界!

View all author’s posts

Leave a reply