LinuxC编程 gcc

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:07:04
一个简单的main()函数 调用了一个max()函数,求2个中较大的;
在主函数中并没有声明,也没有包含头文件,编译时,max作为库函数链接给main:
gcc main.c -L./lib -lmax.a -o main
请问为啥在max没有声明的情况下,主函数依然可以编译成功?用户库在./lib 头文件在./include

对系统函数调用为什么必须声明,是不是因为里面不仅有对函数的声明,还有一些重要的宏定义?
我不但编译了 而且都运行了

只是编译当然没有声明也可以,这个时候符号表里的可以有unresolved symbols,但是链接的时候就必须要解决所有未重定位的符号。

不是这个原因,那就可能是它调用了库函数里的max函数吧

C里面允许不声明就调用函数,链接的时候去解决
但是你用G++的话应该编译就不会通过了