prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 2.18

这个程序能正常工作,但在结束后会 core dump。为什么?

	struct list {
		char *item;
		struct list *next;
	}

	/* Here is the main program. */

	main(argc, argv)
	{ ... }


结构体声明末尾缺少一个分号导致main被声明为返回一个结构体。(由于中间的注释,两者之间的联系很难看出来。)由于结构体值的函数通常是通过添加一个隐藏的返回指针来实现的(参见问题 2.9),生成的代码main()试图接受三个参数,尽管只传递了两个(在这种情况下,由 C 启动代码传递)。另请参见问题 10.916.4

参考文献:CT&P 第 2.3 节,第 21-2 页


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管