为什么我必须专门编译C源文件:
gcc prog.c -lm
Run Code Online (Sandbox Code Playgroud)
即使我已经包含特定的头文件:
#include <math.h>
Run Code Online (Sandbox Code Playgroud)
该#include
文件告诉编译器函数是如何看的,它返回的是什么类型,它采用了多少类型的参数,但它没有告诉编译器内容.
该-lm
标志包括实际的数学库,其中包含要调用的函数的代码.
它的工作原理与以同样的方式printf()
,fread()
和其他标准功能.包含时stdio.h
,实际上并不包含函数的代码,而是包含定义.因为C库是隐式链接的,所以你不必对此做任何事情,你不会注意到它.