0

所以我有以下代码:

#include <math.h>
int main (void) {
float max = fmax (1.0,2.0);
return 0;
}

哪个编译并运行良好,但如果不是将 1.0 和 2.0 传递给函数,我将 a、b 传递给这些值:

#include <math.h>
int main (void) {
float a = 1.0; float b = 2.0;
float max = fmax (a,b);
return 0;
}

我收到以下错误:

undefined reference to `fmax'

有什么区别?我做错了什么?

我正在使用此命令进行编译:

c99 fmax_test.c
4

2 回答 2

5

在第一种情况下,fmax可能会在编译时被优化掉。在第二种情况下,它不会,然后您会收到链接错误。在不知道您使用的是什么编译器的情况下,很难给出具体的补救措施,但如果是 gcc,那么您可能需要添加-lm,例如

c99 -Wall fmax_test.c -lm

另请注意,这fmax是 for doubles - 您应该使用fmaxffor floats。

于 2013-09-18T08:29:08.757 回答
2

用 -lm 编译我正在使用 gcc。您的编译器可能不合适。

尝试这个:

c99 fmax_test.c -lm
于 2013-09-18T08:29:23.370 回答