所以我有以下代码:
#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
答案 0 :(得分:4)
在第一种情况下,fmax
可能会在编译时被优化掉。在第二种情况下它没有,然后你得到一个链接错误。在不知道你使用什么编译器的情况下很难给出具体的补救措施,但如果它是gcc那么你可能需要添加-lm
,例如
c99 -Wall fmax_test.c -lm
另请注意fmax
适用于double
s - 您应fmaxf
使用float
。
答案 1 :(得分:1)
使用-lm编译 我正在使用gcc。也许你的编译器不行。
试试这个:
c99 fmax_test.c -lm