编译时真正发生了什么:
int main;
Run Code Online (Sandbox Code Playgroud)
它不应该是main()并导致错误吗?
我试图在CodeBlocks中编译代码,它编译完美而没有错误.
这不是错误,因为C源文件不需要具有main函数,main只要您不尝试在同一范围内定义它两次,就可以定义为您想要的任何内容.因为这是你的整个程序,所以很好 - 但程序当然无法正常运行,因为没有main找到的功能.
它所做的就是声明一个名为main的全局(外部)变量,初始化为0.链接器通常会发出错误,如果它不存在,但它可能会满足外部变量的存在(我希望它假设它是一个指针) .
编辑:我用调试器调查了一下,果然,main值为0,即变量被用作没有强制转换的指针.因此初始化代码尝试运行位于地址0的函数,从而在我的平台上产生段错误.
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |