fabs 与 fabsl,我是否必须在源代码中输入 fabsl?
fabs vs. fabsl, should I ever have to type fabsl in my source?
我正在重写一些 Mac 代码,这些代码嵌入了一个最初用 C 编写的免费软件库。编译器抱怨说因为我正在使用 long double
,所以我应该使用 fabsl
而不是 fabs
。所以我去改了。
但是,阅读 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
我正在重写一些 Mac 代码,这些代码嵌入了一个最初用 C 编写的免费软件库。编译器抱怨说因为我正在使用 long double
,所以我应该使用 fabsl
而不是 fabs
。所以我去改了。
但是,阅读 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