2.7 使用库的头文件

当使用库时包含对应的头文件是非常必要的,确保正确声明函数的参数和返回值的类型。如果没有声明则可以传递错误的参数类型。

下面的例子展示了另一个调用C数学库的程序。这个例子中函数pow用于计算2的立方:

include

int

main (void)

{

double x = pow (2.0, 3.0);

printf ("Two cubed is %f\n", x);

return 0;

}

然而这个程序有一个错误--#include声明丢失了'math.h',所以编译器不能看到double pow (double x, double y)这个函数的参数类型。

不使用任何警告选项来编译此程序会生成一个产生错误结果的可执行文件:

$ gcc badpow.c -lm

$ ./a.out

Two cubed is 2.851120 (incorrect result, should be 8)

产生错误结果是因为pow函数的参数和返回值的类型与传递的类型不一样。使用'-Wall'选项可以检查到错误原因:

$ gcc -Wall badpow.c -lm

badpow.c: In function ‘main’:

badpow.c:6: warning: implicit declaration of

function ‘pow’

这个例子又一次展示了使用警告选项'-Wall'是非常重要的检测严重错误的方法。