在D中使用“void main”

在D中使用“void main”,d,D,我见过使用void main的D代码。这合法吗?如果是,返回非void(int)是否也合法?为什么语言中允许这样做 从 main()函数 对于唯一的程序,main()作为入口点。在所有模块初始化程序运行之后,以及在任何单元测试运行之后,都会调用它。在它重新转动后,所有模块破坏器都运行。main()必须使用以下表格之一进行声明: 因此,void main是合法的 来自同一份文件,部分: 折返退出当前功能并提供其折返值。如果功能规范规定了一种非无效的折返类型,则需要进行说明。该表达式被多次转换为功能

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

main()函数

对于唯一的程序,main()作为入口点。在所有模块初始化程序运行之后,以及在任何单元测试运行之后,都会调用它。在它重新转动后,所有模块破坏器都运行。main()必须使用以下表格之一进行声明:

因此,
void main
是合法的

来自同一份文件,部分:

折返退出当前功能并提供其折返值。如果功能规范规定了一种非无效的折返类型,则需要进行说明。该表达式被多次转换为功能转换类型

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


(为什么要这样做?

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

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

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

另请参见附录:当
void main
结束时,D以0退出。当
main
异常退出时,运行时将以适当的错误代码退出。不允许从非void函数返回值,并且在运行时会出错。
void main() { ... }
void main(char[][] args) { ... }
int main() { ... }
int main(char[][] args) { ... }