我刚刚遇到的一些旧代码:
MLIST * new_mlist_link()
{
MLIST *new_link = (MLIST * ) malloc(sizeof(MLIST));
new_link->next = NULL;
new_link->mapi = NULL;
new_link->result = 0;
}
这被调用来构建一个链表,但是我注意到没有声明:
return new_link;
即使没有 return 语句,列表仍然可以正确构建。为什么会这样?
编辑:平台:Mandriva 2009 64bit Linux 2.6.24.7-server GCC 4.2.3-6mnb1
编辑:有趣...此代码还在大约 5 个不同的 Linux 安装、所有不同的版本/风格以及 Mac 上成功运行。