2015-09-03 122 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的副作用。现在,该应用程序的构建速度是其速度的十倍。甜! –

相关问题