prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 11.12b

Q我能声明mainvoid,以关闭那些恼人的“main函数无返回值”消息?


A不能。main必须声明为返回一个int,并且接受零个或两个适当类型的参数。如果您正在调用exit()但仍然收到警告,您可能需要插入一个冗余的return语句(或者使用某种“未到达”指令,如果可用)。

声明一个函数为void不仅仅是关闭或重排警告:它也可能导致不同的函数调用/返回序列,这与调用者(在main的情况下是 C 运行时启动代码)所期望的不兼容。也就是说,如果调用序列对于void- 和int- 返回值的函数不同,启动代码将调用main使用特定的int- 返回值约定,如果main被错误地声明为void,它可能无法工作。(另见问题 2.18。)

(请注意,关于main的讨论仅适用于“托管”实现;这些内容均不适用于“ freestanding”实现,后者甚至可能没有main。然而,freestanding 实现相对较少,如果您正在使用一个,您可能知道。如果您从未听说过这种区别,您可能正在使用一个托管实现,并且上述规则适用。)

其他链接: 进一步阅读

参考文献: ISO Sec. 5.1.2.2.1, Sec. G.5.1
H&S Sec. 20.1 p. 416
CT&P Sec. 3.10 pp. 50-51


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

Eskimo North 托管