2015-09-03 151 views
2

我正在重寫一些嵌入了最初用C語言編寫的免費軟件庫的Mac代碼。編譯器抱怨說因爲我使用的是long double,所以我應該使用fabsl而不是fabs。所以我去了,改變了他們。fabs與fabsl,我是否應該在我的源代碼中輸入fabsl?

但是,從主題上看a few pages似乎應該沒有區別,從C99開始,有一種類型的通用宏,它根據類型插入正確的調用。

因此,也許我使用了錯誤的方言?

有誰知道xcode7中的編譯器默認值是什麼,以及它是否具有通用宏?

+0

宏在另一頭定義完美編譯? ! '在標題中定義' – GhostGambler

+0

您是否包含'#包含''? –

+0

我不是,它看起來像C代碼incs math.h.在添加這個之前有什麼我需要知道的嗎?或者這真的是超級通用的? –

回答

2

通用宏在<tgmath.h>定義,所以你需要#include it,如下面的代碼片段:

#include <tgmath.h> 
#include <stdio.h> 

int main() { 
    long double ld = 3.14; 
    double d = 3.14; 
    float f = 3.14f; 
    printf("%Lf %lf, %f\n",fabs(ld), fabs(d), fabs(f)); 
    return 0; 
} 

它與

gcc -Wall -Wextra a.c -oa -std=c99 
+0

工程很好,經過幾次進口。這沒有什麼壞處,所討論的代碼純粹是泛型? –

+0

除了依靠c99之外,我想不是。 –

+0

我確定這只是*巧合,但作爲#importing這些我注意到並改變了一些#includes的副作用。現在,該應用程序的構建速度是其速度的十倍。甜! –

相關問題