【发布时间】:2012-07-08 04:56:09
【问题描述】:
我正在读一本关于 GCC 的书。它说默认情况下,任何 C 程序都只链接标准库。由于pow() 不在标准库中,我必须使用-lm 标志链接到它。但是,我编译的时候,只是简单的使用了:
gcc hello.c -o hello
它仍然有效..
还有一个类似的问题,书中还说如果你的C程序中有printf("%f\n", 4);,如果你编译时没有-Wall选项,不会发出警告。但是,我尝试在没有 -Wall 选项的情况下编译它,但仍然收到警告:
hello.c:6:2: 警告:格式‘%f’需要‘double’类型的参数, 但参数 2 的类型为“int”[-Wformat]
这是为什么?书上说我必须提供-lm 和-Wall 才能编译我的程序并收到警告,但我没有使用它们中的任何一个,但我仍然编译了我的程序并收到了警告?
谢谢!
【问题讨论】:
标签: c gcc compiler-construction