在D中使用`void main`

时间:2011-11-06 09:05:06

标签: d

我见过使用void main的D代码。这合法吗?如果是,返回非voidint)也合法吗?为什么这种语言允许?

2 个答案:

答案 0 :(得分:11)

来自D Language Reference

  

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或抛出。