【问题标题】:Using `void main` in D在 D 中使用 `void main`
【发布时间】:2011-11-06 09:05:06
【问题描述】:

我见过使用void main 的D 代码。这合法吗?如果是,返回非void (int) 是否也合法?为什么在语言中允许这样做?

【问题讨论】:

标签: d


【解决方案1】:

来自D Language Reference

main() 函数

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

void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }

所以void main 是合法的。

来自同一个文档,return statement 部分:

return 退出当前函数并提供其返回值。如果函数指定的返回类型不是 void,则表达式是必需的。表达式隐式转换为函数返回类型

因此,似乎没有明确禁止从 void 函数返回某些内容(并且确实这样做编译得很好)。

(你为什么要这样做?)

【讨论】:

  • 附录:当void main结束时,D以0退出。当main异常退出时,运行时以适当的错误代码退出。不允许从非 void 函数返回值,并且会在运行时出错。
【解决方案2】:

main()函数的以下版本是合法的:

void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }

void main 版本与int main 版本相同,如果它们始终返回 0 或抛出。

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2011-03-10
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 2018-10-22
    相关资源
    最近更新 更多