当前位置: 代码迷 >> C语言 >> 看到很多人问过主函数返回值,我发个帖子解释下!
  详细解决方案

看到很多人问过主函数返回值,我发个帖子解释下!

热度:143   发布时间:2007-12-03 22:50:45.0
原帖由 [bold][underline]zbqf109[/underline][/bold] 于 2007-12-3 22:44 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1129427&ptid=190180][/url]
标准里让写main()吗


我有说标准里有 main()

我是说以前允许 main(),这个也是一个事实。(你可以去查查以前的代码)

main() 是可移植的,return 只是函数返回值,主函数也是可以迪归的。

主函数结束后并不是程序结束,程序结束是要关闭输入输出流,释放内存的。
这些都是隐藏的。


-
-

[[italic] 本帖最后由 cosdos 于 2007-12-4 15:14 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
C Primer Plus
----------------解决方案--------------------------------------------------------
回复 11# 的帖子
不要说以前
以前void main()也是可行的
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]zbqf109[/underline][/bold] 于 2007-12-3 23:01 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1129456&ptid=190180][/url]
不要说以前
以前void main()也是可行的



    在以前的标准中 main()  返回值为 int ,如果你不加上 return ,
那么编译器会为你加上 。

[[italic] 本帖最后由 cosdos 于 2007-12-4 15:16 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
回复 14# 的帖子
我说的是“可行”
不符合标准不一定不可行
我还是那句话,你让编译器给你自动返回一个0作为main()的返回值,是不好的,但不是不可行
我不信这个程序能在你的编译器上通过:
程序代码:
#include <stdlib.h>

fun();

main()
{
      fun();
      system("pause");
}

fun()
{
}
是的,main函数你不写int没关系,可是编译器可不认识你那个fun();是在声明一个函数,还是在调用一个函数?
编译器对main函数经过特殊的处理,但你不要认为这种特殊是必须的。特殊对于移植来讲,绝对不是一件好事情。

[[italic] 本帖最后由 zbqf109 于 2007-12-3 23:14 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]zbqf109[/underline][/bold] 于 2007-12-3 23:12 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1129461&ptid=190180][/url]
我说的是“可行”
不符合标准不一定不可行
我还是那句话,你让编译器给你自动返回一个0作为main()的返回值,是不好的,但不是不可行
我不信这个程序能在你的编译器上通过:#include

fun();

main()
{
      fun();
      s ...



    我也从来没有让我的编译器把 main() 自动返回0,我使用的是 DEV-C++,
完全通过。

#include <stdlib.h>
fun();
main()
{
      fun();
      system("pause");
}
fun()
{
}

//-------------- 请按标准写主函数 -------------------------------------//
int main(void)  // 标准写法
{
    return 0;
}

[[italic] 本帖最后由 cosdos 于 2007-12-4 15:18 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
回复 16# 的帖子
大哥,我们的程序是一样的吗?
………………
----------------解决方案--------------------------------------------------------
int main(void)
{
    return 0;
}

很多编译器还没有严格要求这样做。

[[italic] 本帖最后由 cosdos 于 2007-12-4 15:05 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
同样是Devc,我这里提示很多错误
jackys2006 的 《[原创]关于main()函数》中的一句话:
main()
这种形式开始。C90标准允许这种形式,但是C99标准不允许。因此即使你当前的编译器允许,也不要这么写。

好了,我就说这么多,这个话题我就参与到这里
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]zbqf109[/underline][/bold] 于 2007-12-3 23:27 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1129470&ptid=190180][/url]
同样是Devc,我这里提示很多错误
jackys2006 的 《[原创]关于main()函数》中的一句话:
main()
这种形式开始。C90标准允许这种形式,但是C99标准不允许。因此即使你当前的编译器允许,也不要这么写。

好了,我就说这么多,这个 ...


你没有包含  stdlib.h 吧!

文件必须包含!因为函数是在库中的!

[[italic] 本帖最后由 cosdos 于 2007-12-3 23:33 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
  相关解决方案