在编写C程序的时候,都是从main函数开始,然而main函数真的是C程序的入口
吗?让我们来看看下面的程序:
编译:
运行:
从运行结果中,可以发现before_main是在进入main函数之前被调用的,这点对于C语言
的初学者来说似乎有点难以接受。究竟是谁调用的before_main呢?怎么还没有进入main
就可以有代码被执行呢?
在编译的过程中可以使用-v来详细地显示编译的过程,如下所示。
可以看到,在链接生成最后的可执行文件时,有大量的C库二进制文件参与进来,
如crtl.o,crti.o等。可见最终的可执行文件,除了我们编写的这个简单的C代码以外,
还有大量的C库文件参与了链接,并包含在最终的可执行文件中。
在编写C程序的时候,都是从main函数开始,然而main函数真的是C程序的入口
吗?让我们来看看下面的程序:
编译:
运行:
从运行结果中,可以发现before_main是在进入main函数之前被调用的,这点对于C语言
的初学者来说似乎有点难以接受。究竟是谁调用的before_main呢?怎么还没有进入main
就可以有代码被执行呢?
在编译的过程中可以使用-v来详细地显示编译的过程,如下所示。
可以看到,在链接生成最后的可执行文件时,有大量的C库二进制文件参与进来,
如crtl.o,crti.o等。可见最终的可执行文件,除了我们编写的这个简单的C代码以外,
还有大量的C库文件参与了链接,并包含在最终的可执行文件中。