我正在重寫一些嵌入了最初用C語言編寫的免費軟件庫的Mac代碼。編譯器抱怨說因爲我使用的是long double
,所以我應該使用fabsl
而不是fabs
。所以我去了,改變了他們。fabs與fabsl,我是否應該在我的源代碼中輸入fabsl?
但是,從主題上看a few pages似乎應該沒有區別,從C99開始,有一種類型的通用宏,它根據類型插入正確的調用。
因此,也許我使用了錯誤的方言?
有誰知道xcode7中的編譯器默認值是什麼,以及它是否具有通用宏?
我正在重寫一些嵌入了最初用C語言編寫的免費軟件庫的Mac代碼。編譯器抱怨說因爲我使用的是long double
,所以我應該使用fabsl
而不是fabs
。所以我去了,改變了他們。fabs與fabsl,我是否應該在我的源代碼中輸入fabsl?
但是,從主題上看a few pages似乎應該沒有區別,從C99開始,有一種類型的通用宏,它根據類型插入正確的調用。
因此,也許我使用了錯誤的方言?
有誰知道xcode7中的編譯器默認值是什麼,以及它是否具有通用宏?
通用宏在<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
工程很好,經過幾次進口。這沒有什麼壞處,所討論的代碼純粹是泛型? –
除了依靠c99之外,我想不是。 –
我確定這只是*巧合,但作爲#importing這些我注意到並改變了一些#includes的副作用。現在,該應用程序的構建速度是其速度的十倍。甜! –
宏在另一頭定義完美編譯? ! '在標題中定義' –
GhostGambler
您是否包含'#包含''? –
我不是,它看起來像C代碼incs math.h.在添加這個之前有什麼我需要知道的嗎?或者這真的是超級通用的? –