我正在读一本关于 GCC 的书。它说默认情况下,任何 C 程序都只链接标准库。由于pow()
不在标准库中,我将不得不使用-lm
标志链接到它。但是,当我编译时,我只是使用了:
gcc hello.c -o hello
它仍然有效..
还有一个类似的问题,书上还说,如果你printf("%f\n", 4);
的C程序中有,如果你编译WITHOUT-Wall
选项,不会发出警告。但是,我尝试在没有-Wall
选项的情况下编译它,但仍然收到警告:
hello.c:6:2:警告:格式“%f”需要“double”类型的参数,但参数 2 的类型为“int”[-Wformat]
为什么是这样?这本书说我必须提供-lm
并且-Wall
为了使我的程序编译并得到警告,但我没有使用它们中的任何一个,但我仍然编译了我的程序并得到了警告?
谢谢!