我有大约200个文件,我们在其中使用了“ abs”函数来查找int,long和double的绝对值。对于双打,正确的函数调用是fabs而不是abs。现在在C ++ 11中,被abs处理的c ++ 11中也支持double值,但是我们目前使用的是旧编译器。
计划在明年转换到C ++ 11,我们需要间歇性地进行修复。
现在,所有这些文件的开头都有一个名为StdAfx.h的头。所以我想要类似#define abs(X)fabs(X)的东西。但是,问题在于这些文件还具有其他头文件,例如math.h等,其中实际上声明了abs和fabs,这使得这些代码不可编译。
Gcc说abs被重新声明,因为那些c ++ standerad头文件中有abs和fbs的声明。
因此,我想在StdAfx.h中使用一些语句,以便仅将“调用”到abs(double x)转换为fabs(double X),而不转换为fabs(double X)的定义。
请指导我。
您不需要宏;只是abs
在公共头文件中重载:
static double abs(double x) { return fabs(x); }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句