在D中使用`void main`

Pau*_*nta 8 d

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

Mat*_*Mat 11

来自D语言参考

主功能

对于控制台程序,main()用作入口点.在运行所有模块初始化程序之后,以及在运行任何单元测试之后调用它.返回后,运行所有模块析构函数.必须使用以下形式之一声明main():

void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }
Run Code Online (Sandbox Code Playgroud)

void main是合法的.

从相同的文档中,return语句部分:

返回退出当前函数并提供其返回值.如果函数指定非void的返回类型,则需要表达式.Expression隐式转换为函数返回类型

因此,似乎不会明确禁止从void函数返回某些内容(实际上这样做可以很好地编译).

(你为什么要这样做?)

  • 附录:当`void main`结束时,D退出0.当`main`退出异常时,运行时以适当的错误代码退出.不允许从非void函数返回值,并且在运行时将出错. (3认同)