2

我正在重写一些嵌入了最初用 C 编写的免费软件库的 Mac 代码。编译器抱怨说,由于我使用的是. long double,所以我应该使用fabsl而不是fabs. 所以我去改变了它们。

但是,阅读有关该主题的几页似乎应该没有区别,从 C99 开始,就有一个类型泛型宏可以根据类型插入正确的调用。

所以也许我使用了错误的方言?

有谁知道 xcode7 中的编译器默认值是什么,以及它是否具有通用宏?

4

1 回答 1

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
于 2015-09-03T13:01:11.057 回答