gpt4 book ai didi

c - 在 C 中,main 不需要是一个函数?

转载 作者:太空狗 更新时间:2023-10-29 16:36:47 26 4
gpt4 key购买 nike

此代码可以编译,但不足为奇,它在链接时失败(找不到主要内容):

list 1:

void main();

链接错误:\mingw\lib\libmingw32.a(main.o):main.c:(.text+0x106) 对 _WinMain@16' 的 undefined reference

但是,下面的代码可以正常编译和链接,但会出现警告:

list 2:

void (*main)();

警告:'main' 通常是一个函数

问题:

  1. 在列表 1 中,链接器应该有提示缺少“主要”。为什么它在寻找 _WinMain@16 吗?

  2. 生成的可执行文件 list 2 简单地崩溃了。什么是原因是什么?

感谢您的宝贵时间。

最佳答案

是的,main 不需要是一个函数。这已在一些混淆程序中被利用,这些程序在名为 main 的数组中包含二进制程序代码。

main() 的返回类型必须是int(不是void)。如果链接器正在寻找 WinMain,它会认为您有一个 GUI 应用程序。

关于c - 在 C 中,main 不需要是一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2252380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com