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)
在第一种情况下,fmax
可能会在编译时进行优化。在第二种情况下则不然,然后您会收到链接错误。不知道您使用的是哪种编译器,很难给出具体的补救措施,但是如果是gcc,则可能需要添加-lm
,例如
c99 -Wall fmax_test.c -lm
Run Code Online (Sandbox Code Playgroud)
另请注意,这fmax
是针对double
s的-您应该fmaxf
对float
s 使用。