📜  在C C++中编写“ void main()”或“ main()”是否可以?(1)

📅  最后修改于: 2023-12-03 15:23:22.197000             🧑  作者: Mango

在C/C++中编写“void main()”或“main()”是否可以?

在C/C++中编写程序的时候,我们常常需要在代码中编写主函数(main function),以便让程序能够顺序执行。然而,关于主函数的写法,经常会有不同的看法和疑问。

最常见的问题之一就是,是否可以在主函数中使用“void main()”或“main()”这样的写法?事实上,这个问题的答案并不是简单的“是”或“否”,而是需要具体情况具体分析。

在C语言中“void main()”是否可以使用?

在C语言中,主函数的原型通常写成:

int main(void)
或
int main(int argc, char *argv[])

其中,第一种写法适用于不需要接受命令行参数的情况,第二种写法适用于需要接受命令行参数的情况。这两种写法都可以正常使用和编译。而如果使用“void main()”这样的写法,则会遭遇一些问题。

首先,按照C标准,main函数的返回类型必须是int类型,而“void main()”这样的写法违反了这个规定。其次,某些编译器可能会自动将“void main()”转换成“int main()”,但这是非标准的行为,并且在其他编译平台上可能会出现错误。因此,尽管“void main()”可以编译通过,但并不推荐使用。

在C++语言中“void main()”或“main()”是否可以使用?

在C++语言中,主函数的原型通常写成:

int main()
或
int main(int argc, char *argv[])

与C语言不同的是,C++标准允许省略返回类型int,因此可以使用“main()”这样的写法。而“void main()”这样的写法在C++中也是非标准的,并且可能会引起不同的编译器行为。

一些编译器可能会自动将“void main()”转换成“int main()”,但这并不是C++标准定义的,因此不能保证在所有编译器上都能够正常使用。另外,部分编译器会将“void main()”转换成“int main(void)”,仍然保留了返回类型为int的特点。但是,这种写法也是不标准的,并且不推荐使用。

因此,在C++语言中,推荐使用标准的“int main()”或“int main(int argc, char *argv[])”这两种写法。

总结

在C和C++语言中,主函数的原型必须遵循标准的定义,返回类型必须为int类型。因此,“void main()”这样的写法不被推荐,并且可能会引起不同的编译器行为。在实际编程中,应该使用标准的主函数写法:“int main()”或“int main(int argc, char *argv[])”。