如何#define call(Double X) 到 func2(double X)

How to #define call(Double X) to func2(double X)

我有大约 200 个文件,我们在其中使用 "abs" 函数来查找 ints 、 longs 和 doubles 的绝对值。对于双打,正确的函数调用是 fabs 而不是 abs 。 现在在 C++11 中作为 abs 处理,在 c++11 中也支持双精度数,但我们目前使用的是旧编译器。

计划在明年转向 C++11,我们需要间歇性地进行修复。

现在所有这些文件的开头都有一个名为 StdAfx.h 的 header。所以我想要类似 #define abs(X) fabs(X) 的东西。然而,问题是这些文件还有其他 headers,如 math.h 等,其中实际声明了 abs 和 fabs,这使得这些代码无法编译。

Gcc 说 abs 正在重新声明,因为那些 c++ standerad headers 有 abs 和 fbs 的声明。

所以我想在 StdAfx.h 中使用一些语句,这样只有 "CALL" 到 abs(double x) 被翻译成 fabs(double X) 而不是它的定义。

请指导我。

你不需要宏;只需在公共头文件中重载 abs

static double abs(double x) { return fabs(x); }