打印
[MM32软件]

main()的返回类型

[复制链接]
897|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
OKAKAKO|  楼主 | 2024-8-31 15:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

问:下面的代码能 编译通过吗?如果能,它有什么潜在的问题吗?

#include<stdio.h> 

void main(void)
{
    char *ptr = (char*)malloc(10);

    if(NULL == ptr)
    {
        printf("\n Malloc failed \n");
        return;
    }
    else
    {
        // Do some processing
        free(ptr);
    }

    return;
}

答:因为main()方法的返回类型,这段代码的错误在大多数编译器里会被当作警告。

main()的返回类型应该是“int”而不是“void”。因为“int”返回类型会让程序返回状态值。这点非常重要,特别当程序是作为依赖于程序成功运行的脚本的一部分运行时。

使用特权

评论回复
沙发
LOVEEVER| | 2024-8-31 20:35 | 只看该作者
还是需要注意数据类型的

使用特权

评论回复
板凳
呐咯密密| | 2024-9-3 10:28 | 只看该作者
一直没注意过main的返回类型,咋一看这段代码竟然没发现问题

使用特权

评论回复
地板
q1d0mnx| | 2024-11-10 21:47 | 只看该作者
这段代码可以编译通过,但存在一些潜在的问题和改进建议比如缺少头文件

使用特权

评论回复
5
b5z1giu| | 2024-11-11 12:12 | 只看该作者
代码中使用了malloc和free函数,但没有包含相应的头文件<stdlib.h>。虽然某些编译器可能会在没有包含头文件的情况下编译通过,但这不是一个好的编程习惯。

使用特权

评论回复
6
cen9ce| | 2024-11-11 16:11 | 只看该作者
在else分支中,如果ptr分配成功,代码会执行一些处理,然后释放内存。但如果else分支中的处理代码抛出异常或提前返回,可能会导致内存泄漏。

使用特权

评论回复
7
g0d5xs| | 2024-11-11 19:02 | 只看该作者
ptr分配内存后,没有对其进行初始化。如果后续代码依赖于ptr的内容,可能会导致未定义行为。

使用特权

评论回复
8
ex7s4| | 2024-11-11 21:01 | 只看该作者
main函数的返回类型应该是int,而不是void。虽然某些编译器允许void作为main的返回类型,但这不符合C语言标准。

使用特权

评论回复
9
lamanius| | 2024-11-11 22:12 | 只看该作者
虽然代码中检查了malloc的返回值,但没有进一步处理内存分配失败的情况。在实际应用中,可能需要更详细的错误处理。

使用特权

评论回复
10
liu96jp| | 2024-11-12 07:17 | 只看该作者
建议添加<stdlib.h>头文件。

使用特权

评论回复
11
q1ngt12| | 2024-11-12 09:11 | 只看该作者
一般需要将main函数的返回类型改为int。

使用特权

评论回复
12
suw12q| | 2024-11-13 11:12 | 只看该作者
一般来说需要初始化分配的内存。

使用特权

评论回复
13
tax2r6c| | 2024-11-13 13:12 | 只看该作者
正常的话,是需要返回适当的错误码。

使用特权

评论回复
14
suncat0504| | 2024-11-16 21:33 | 只看该作者
main不是入口函数吗?有没有返回类型,不知道有什么作用。

使用特权

评论回复
15
suncat0504| | 2024-11-16 21:35 | 只看该作者
以前开发51单片机,入口直接跳转到某个地方开始执行。在ARM中,应该也是类似的吧。可能内部设备多,处理内容多,在执行用户程序前发现有什么错误,可以通过返回值做出判断。

使用特权

评论回复
16
顽强de板子| | 2024-11-21 16:38 | 只看该作者
在C或C++编程语言中,main()函数的返回类型是int。当你编写一个程序时,main()函数是程序的入口点,即程序开始执行的地方。该函数通常接收两个参数:argc(表示命令行参数的数量)和argv(包含命令行参数的数组或指针)。main()函数在执行完成后返回一个整数值,通常用于指示程序是否成功执行。返回0通常表示成功,而非零值表示出现了某种错误

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

209

主题

1446

帖子

4

粉丝