我有大約200個文件,我們使用「abs」函數來查找整數,長整數和雙精度的絕對值。對於雙打,正確的功能調用是fabs而不是abs。 現在在C++ 11中處理爲abs支持雙精度以及在c + + 11中,但我們目前在舊的編譯器。如何#定義調用(雙X)到func2(雙X)
轉移到C++ 11計劃明年,我們需要間歇性地修復。
現在所有這些文件都有一個名爲StdAfx.h的頭文件。所以我想要像#define abs(X)fabs(X)這樣的東西。然而,問題是這些文件還有其他頭文件,如math.h等,其中abs和fab實際上是聲明,這使得這些代碼不可編譯。
Gcc說abs正在被重新宣佈,因爲那些C++ standerad頭文件已經聲明瞭abs和fbs。
所以我想在StdAfx.h中使用一些語句,這樣只有abs(double x)的「CALL」被轉換爲fabs(double X),但不是它的定義。
請親引導我。
你想要什麼是不可能的。改寫你的代碼。 –
我不確定你爲什麼認爲這會比修正受影響的代碼更好。它可能讓你能夠快速構建,但從長期維護的角度來看,它似乎並不值得。 –