Linker 为什么主方法和其他方法不一样
在下面的程序中,我想知道为什么main不会像其他方法一样损坏:Linker 为什么主方法和其他方法不一样,linker,Linker,在下面的程序中,我想知道为什么main不会像其他方法一样损坏: int main() { } int main1() { } 如果我检查出nm,我看到主方法没有损坏,而main1是。我尝试使用#pragma条目将程序条目从main更改为main1,但没有效果 谢谢你在这方面的帮助 如果我检查出nm,我会看到main方法没有损坏,而main1没有损坏 main符号在几个方面都很特殊: 你不能记下它的地址 你不能自己叫它 它不能被损坏,因为标准C运行时库将通过unmangledmainn
int main()
{
}
int main1()
{
}
如果我检查出nm,我看到主方法没有损坏,而main1是。我尝试使用#pragma条目将程序条目从main更改为main1,但没有效果
谢谢你在这方面的帮助
如果我检查出nm,我会看到main
方法没有损坏,而main1
没有损坏
main
符号在几个方面都很特殊:
- 你不能记下它的地址
- 你不能自己叫它
- 它不能被损坏,因为标准C运行时库将通过unmangled
name调用它main
<>所以它没有被破坏,因为C++标准需要。另请参见。向后兼容性?我猜链接器会搜索一个未损坏的
main
。类似于为什么使用#pragma条目更改程序的入口点对它没有影响?基于这些建议,我进一步阅读了#pragma行为。似乎pragma支持依赖于编译器,我找到了g++支持的-Wunknown pragmas标志,看看g++编译器是否理解pragma。似乎编译器不支持#pragma entry或#pragma comment(linker…),因此main()方法不会被破坏,而main1()则会被破坏,尽管将入口点更改为main1()。