C语言函数没有返回类型也可以吗?

yaoyaozii 2010-02-02 11:50:18
像下面这样的:
main(Argc, Argv)
/* ---- */
int Argc;
char *Argv[];
{
int o;
extern char *optarg; //#include<unistd.h>里有(在getopt.c也有
extern int optind; //#include<unistd.h>里有(在getopt.c也有
...


请教高手了。
...全文
1383 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可以的,比较老的C实现允许这样。老的实现中允许返回int, void(或干脆不写)。但是如果没有返回类型,CRT退出时进程的返回值(返回给OS)的值是怎么定义的就不得而知了。
飞天御剑流 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 yaoyaozii 的回复:]
像下面这样的:
    main(Argc, Argv)
/*  ----  */
    int Argc;
    char *Argv[];
{
    int o;
    extern char *optarg;    //#include <unistd.h>里有(在getopt.c也有
    extern int optind;      //#include <unistd.h>里有(在getopt.c也有
...


请教高手了。
[/Quote]

c90及之前的c含有很多默认规则,当没有指定类型时,默认为int,这些隐含规则在c99之后被废除了。
yaoyaozii 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pengzhixi 的回复:]
这个贴之前甘草有说过,即使你main函数没有返回值,crt里面也会帮你加上去
[/Quote]

怎么说呢?
yaoyaozii 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 stardust20 的回复:]
引用 6 楼 yaoyaozii 的回复:
是不是void 不写也可以?

不可以。。。当然一些比较早的编译器可能支持。。。但还是写了吧。。还有最好用 int main。。。
[/Quote]

make 编译可以
yaoyaozii 2010-02-02
  • 打赏
  • 举报
回复
我是在Linux下运行这个程序的
stardust20 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yaoyaozii 的回复:]
是不是void 不写也可以?
[/Quote]
不可以。。。当然一些比较早的编译器可能支持。。。但还是写了吧。。还有最好用 int main。。。
yaoyaozii 2010-02-02
  • 打赏
  • 举报
回复
是不是void 不写也可以?
cocat 2010-02-02
  • 打赏
  • 举报
回复
楼主的程序没怎么看懂,但是问题是当然可以没有返回类型,void 不就是吗?
void main()//这样不就是
{
}
guzhijie1981 2010-02-02
  • 打赏
  • 举报
回复
k r时代好象默认是int;
pengzhixi 2010-02-02
  • 打赏
  • 举报
回复
这个贴之前甘草有说过,即使你main函数没有返回值,crt里面也会帮你加上去
Zijian_Zhang 2010-02-02
  • 打赏
  • 举报
回复
主函数没有返回类型不行,C99规定主函数返回int。
swl82560397pq 2010-02-02
  • 打赏
  • 举报
回复
mark!
Steven_0610 2010-02-02
  • 打赏
  • 举报
回复
学习了!
yaoyaozii 2010-02-02
  • 打赏
  • 举报
回复
OneTree()
/* --------- */
{
Tree FormTree(), CopyTree();
Boolean Prune();

InitialiseTreeData();
InitialiseWeights();

Raw = (Tree *) calloc(1, sizeof(Tree));
Pruned = (Tree *) calloc(1, sizeof(Tree));
...
}
你们都在讨论main(),那么这个同理吗?
wykqhyjs 2010-02-02
  • 打赏
  • 举报
回复
JF
yaoyaozii 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 yzx714 的回复:]
楼主一看就是没有看过K&R的
[/Quote]
确实没有- -!杯具了
yaoyaozii 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zhao4zhong1 的回复:]
引用 12 楼 idisposable 的回复:
可以的,比较老的C实现允许这样。老的实现中允许返回int, void(或干脆不写)。但是如果没有返回类型,CRT退出时进程的返回值(返回给OS)的值是怎么定义的就不得而知了。

没有返回类型,CRT退出时进程的返回值(返回给OS)的值是exit(要返回的值);
[/Quote]

忘贴上来了,那程序后面确实有个exit(0).
huanmie_09 2010-02-02
  • 打赏
  • 举报
回复
look ->
http://tieba.baidu.com/f?kz=681560122
chaoliu1024 2010-02-02
  • 打赏
  • 举报
回复
默认main函数返回值是整型,但是最好写明,这样规范!
kinglybaby 2010-02-02
  • 打赏
  • 举报
回复
默认为整型 int
加载更多回复(9)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧