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;
}
总结
因此,在开发中,除非极其要求移植性使用第五种写法外,我们一般还是使用第二种的写法,许多大神也提到,这种写法可能是因为教材的原因导致的,这里我们也不去探究了,没意义。
本文来自博客园,作者:{张一默},转载请注明原文链接:https://www.cnblogs.com/YiMo9929/p/16754395.html