将变量传递给fmax

Mse*_*ade 0 c variables math.h

所以我有以下代码:

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

哪个可以编译并正常运行,但是如果不是将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;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

undefined reference to `fmax'
Run Code Online (Sandbox Code Playgroud)

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

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

c99 fmax_test.c
Run Code Online (Sandbox Code Playgroud)

Pau*_*l R 5

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

c99 -Wall fmax_test.c -lm
Run Code Online (Sandbox Code Playgroud)

另请注意,这fmax是针对doubles的-您应该fmaxffloats 使用。