我见过使用void main
的D代码。这合法吗?如果是,返回非void
(int
)也合法吗?为什么这种语言允许?
答案 0 :(得分:11)
main()函数
对于控制台程序,main()用作入口点。在运行所有模块初始化程序之后,以及在运行任何单元测试之后调用它。返回后,运行所有模块析构函数。必须使用以下形式之一声明main():
void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }
所以void main
是合法的。
来自相同的文档,return statement部分:
返回退出当前函数并提供其返回值。如果函数指定非void的返回类型,则需要表达式。 Expression被隐式转换为函数返回类型
所以看起来没有明确禁止从void函数返回一些东西(事实上这样做很好)。
(你为什么要这样做?)
答案 1 :(得分:0)
以下版本的main()
功能是合法的:
void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }
void main
版本与int main
版本相同,如果它们始终返回0或抛出。