Fork me on GitHub

C++: main的正确打开方式

  编程时最容易忽略的main函数到底应该怎末写才是最安全,最合法,最完美的。

C++标准

  最普遍的情况来说,C++标准中明确表示标准的main函数返回值必须为int类型;无参写法为int main(void);有参写法为int main(int argc, char* argv[])

main函数的常见情况及说明

第一种:不推荐

//不声明是否传入参数:C89允许,C99不允许
int main()
{
	return 0;
}

第二种:推荐

//最推荐的标准mian:无参数的写法,也是作者最常用的写法,C89和C99都允许,不知道为什莫使用的人很少
int main(void)
{
	return 0;
}

第三种:不推荐

//光秃秃的main:不表明返回值=int main,C89的标准,C99不允许
main()
{
	return 0;
}

第四种:禁止使用

//void main:不接受任何参数,不返回任何参数,最垃圾的写法,C++标准中从来没有定义此种格式
void main()
{
}

第五种:非必要不推荐

//标准写法扩展:C89和C99都允许,通常为外部提供外部接口
int main(int argc/*命令行总的参数个数*/, char** argv/*argc个参数*/)//int main(int argc, char* argv[])
{
	return 0;
}

/*
针对此种用法,作者也没见过,查阅相关博主文章后,简略如下:

argc用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说你的程序编译后,可执行文件是test.exe

D:\tc2>test
这个时候,argc的值是1

但是如果为
D:\tc2>test.exe myarg1 myarg2
就是 命令名 加上两个参数,一共三个参数
argc的值是3,argc[0]的值是”test”,argc[1]的值是”myarg1”,argc[2]的值是”myarg2”。

argc[]一般用来为程序提供非常重要的信息,如:数据文件名,等等。
如:copy a.c b.txt
这个时候,a.c和b.txt就是所谓的“非常重要的信息”。不指定这两个文件,你没法进行拷贝。
当你的程序用到argc和argv这两个参数的时候,可以简单地通过判断argc的值,来看看程序的参数是否符合要求

原文链接:https://blog.csdn.net/mengyandelove/article/details/8228550
*/

第六种:不推荐

//标准写法扩展:C89和C99都允许,多源于编译器的扩展,不常用
int main(int argc, char** argv, char** envp)
{
	return 0;
}

总结

  因此,在开发中,除非极其要求移植性使用第五种写法外,我们一般还是使用第二种的写法,许多大神也提到,这种写法可能是因为教材的原因导致的,这里我们也不去探究了,没意义。

posted @ 2022-10-04 20:21  张一默  阅读(194)  评论(0编辑  收藏  举报