main函数究竟应该怎么写?
2013-11-18 11:14
225 查看
文章开始之前,先聊聊工作的话题。个人感觉程序员应该是人员流动比较大的职业,我也在上个月辞去了自己的第一份工作。辞职容易,找工作难,找一份满意的工作更难。不仅要求你能熟练使用开发语言,还要你熟悉常用的框架,还要你懂各种算法,操作系统原理,各种协议等等。你还得有自己的拿得出手的作品才行。csdn或stackoverflow的积分,个人的技术blog,github的开源代码都是很好的加分项。如果你是做android开发的,你最好能自己开发个应用放到google play去。与其在同等级别的公司间跳来跳去,还不如沉下心来看看书,坚持写blog,多练练手,顺便开源些好的项目。为下一次跳槽做好充分的准备。
在大多数程序语言里,程序由main函数开始执行,因此被称之为入口函数。然而,当你学了编程一段时间后,你肯定见过不止一种main函数的写法。你有木有想过,究竟那种写法才算是标准的呢?毕竟各个平台对编译器的实现有所不同,往往标准的部分是相同的。如果你的程序是按标准来写的,那意味着你的程序是跨平台的。在这篇文章,我们来谈谈c,c++里main函数该如何写。
标准C
那C99来说吧,标准规定main函数应该定义为返回int类型,且带有0个参数或2个参数,即如下形式:
或其他等价形式,如char *argv[]可以写成char **argv。说到这里,顺便提一下,argc指的是argument count,这个大家没有疑问。但argv有人说是argument values,其实是不对的,argv应该指argument vector(the vector term in this variable's name is used in traditional sense to refer to strings)。
当你看老版的c语言程序时,可能会看到
main()
这种写法。c90允许这么写,c99不允许了。以前这么写是表示默认返回int类型,而参数列表()表示接受任意个参数。现在我们坚决反对这种形式。
int返回类型的作用在于表明程序是如何退出的。0或EXIT_SUCCESS 表示正常退出,EXIT_FAILURE表示非正常退出。stdlib.h中提供了这两个宏;两个参数分别表示字符串个数和字符串数组,举例:gcc
-o a a.c,那么argc=4,argv分别是
argv[0]---------> "gcc"
argv[1]---------> "-o"
argv[2]---------> "a"
argv[3]---------> "a.c"
gcc通过解析这些参数,知道要编译a.c文件并生成一个名叫a的可执行程序。
你可以省略main的返回语句,默认将返回0
标准C++
标准c++11规定
1.一个程序应该包含一个叫main的全局函数
2.main函数不应该被重载,main必须返回int类型。所有的实现应允许以下两种写法
3.The function
not be used within a program.
也就是你不应该在其他函数里调用main或者&main等操作。但是目前很多编译器好像是允许你去调用main的。
4.如果main省略了返回语句,那相当于return 0;
c++标准明确表示main应该返回int类型,因此返回void是没法通过编译的。
扩展
一般地,Uinx支持第三种扩展形式
Mac OS X还有
【转载请注明出处:http://blog.csdn.net/booirror/article/details/12916555】
在大多数程序语言里,程序由main函数开始执行,因此被称之为入口函数。然而,当你学了编程一段时间后,你肯定见过不止一种main函数的写法。你有木有想过,究竟那种写法才算是标准的呢?毕竟各个平台对编译器的实现有所不同,往往标准的部分是相同的。如果你的程序是按标准来写的,那意味着你的程序是跨平台的。在这篇文章,我们来谈谈c,c++里main函数该如何写。
标准C
那C99来说吧,标准规定main函数应该定义为返回int类型,且带有0个参数或2个参数,即如下形式:
int main(void) { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }
或其他等价形式,如char *argv[]可以写成char **argv。说到这里,顺便提一下,argc指的是argument count,这个大家没有疑问。但argv有人说是argument values,其实是不对的,argv应该指argument vector(the vector term in this variable's name is used in traditional sense to refer to strings)。
当你看老版的c语言程序时,可能会看到
main()
这种写法。c90允许这么写,c99不允许了。以前这么写是表示默认返回int类型,而参数列表()表示接受任意个参数。现在我们坚决反对这种形式。
int返回类型的作用在于表明程序是如何退出的。0或EXIT_SUCCESS 表示正常退出,EXIT_FAILURE表示非正常退出。stdlib.h中提供了这两个宏;两个参数分别表示字符串个数和字符串数组,举例:gcc
-o a a.c,那么argc=4,argv分别是
argv[0]---------> "gcc"
argv[1]---------> "-o"
argv[2]---------> "a"
argv[3]---------> "a.c"
gcc通过解析这些参数,知道要编译a.c文件并生成一个名叫a的可执行程序。
你可以省略main的返回语句,默认将返回0
标准C++
标准c++11规定
1.一个程序应该包含一个叫main的全局函数
2.main函数不应该被重载,main必须返回int类型。所有的实现应允许以下两种写法
int main() { /* ... */ }
int main(int argc, char* argv[]) { /* ... */ }
3.The function
mainshall
not be used within a program.
也就是你不应该在其他函数里调用main或者&main等操作。但是目前很多编译器好像是允许你去调用main的。
4.如果main省略了返回语句,那相当于return 0;
c++标准明确表示main应该返回int类型,因此返回void是没法通过编译的。
扩展
一般地,Uinx支持第三种扩展形式
int main(int argc, char **argv, char **envp) { ... }
Mac OS X还有
int main(int argc, char **argv, char **envp, char **apple);
【转载请注明出处:http://blog.csdn.net/booirror/article/details/12916555】
相关文章推荐
- main函数究竟应该怎么写?
- main函数究竟应该怎么写?
- linux免费视频究竟应该怎么找?该怎么看呢?
- 【毕业生】简历究竟应该怎么“写”?
- 究竟应该怎么调用WCF服务?
- 比特币冷钱包到底应该怎么做
- 返利网站洗牌升级 大家应该怎么办啦、
- 色彩管理软件中数据列表应该怎么管理?
- 一个大神程序员的使命感究竟应该是什么
- android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明
- 老赵谈IL(4):什么时候应该学IL,该怎么学IL
- DNS应该怎么设置
- 平面设计,字体应该怎么选?
- 【Network】高性能 UDP 服务应该怎么搞?
- 电脑无法更新 错误代码80240038 应该怎么办?
- delete p 究竟把p怎么了?(某公司校园招聘笔试试题)
- 配股应该怎么操作 配股是用钱买的不是送你的而且还要除权(不会新学的才知道配股是要买的)
- 男士衬衣应该怎么穿
- 【PM】项目管理之进度:如果发现因为种种原因导致实际工期远远超出预计工期时,你应该怎么做
- 对于网站降权到底应该怎么调整呢