我正在重写一些嵌入了最初用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.在添加这个之前有什么我需要知道的吗?或者这真的是超级通用的? –