-
-
[讨论]mainCRTStartup调用的是我们定义的main吗?
-
发表于:
2018-2-16 21:47
4645
-
[讨论]mainCRTStartup调用的是我们定义的main吗?
最近看了《masm32开发包与VC6.0之间存在的Bug的体现及解决办法》,学的非常好,但我仍有个疑问
基本上所有的资料上都说,mainCRTStartup调用的是我们定义的main,但crt0.c源码中的main是三个参数的
int __cdecl main(int, char **, char **); /*generated by compiler*/
#ifdef WPRFLAG
__winitenv = _wenviron;
mainret = wmain(__argc, __wargv, _wenviron);
#else /* WPRFLAG */
__initenv = _environ;
mainret = main(__argc, __argv, _environ);
#endif /* WPRFLAG */
但标准的是以下两个
int main(void)
int main(int argc, char *agrv[])
VC下也可以使用三个参数的main
我的问题是crt0.obj中已经包含_main强符号(三个参数的main函数),我们提供的(无参数或两个参数)main函数也将产生_main强符号,这不会产生冲突吗
另外,看crt0.c代码,mainCRTStartup调用的是由编译器自动生成的带三个参数的main函数,而我们提供的(无参数或两个参数)main函数是由谁调用的呢
是这个编译器产生的三个参数是main调用了我们提供的符合标准的main吗?
如果是的话,但链接符号_main有两个,不会因重复导致冲突吗?
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!