main函数究竟应该怎么写?
来源:互联网 发布:ubuntu查看根目录 编辑:程序博客网 时间:2024/04/29 08:14
在大多数程序语言里,程序由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
main
shall 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);
- main函数究竟应该怎么写?
- main函数究竟应该怎么写?
- main函数究竟应该怎么写?
- 【毕业生】简历究竟应该怎么“写”?
- 究竟应该怎样写博客
- 博客应该怎么写
- main函数之前究竟发生了什么?
- main函数之前究竟发生了什么?
- linux免费视频究竟应该怎么找?该怎么看呢?
- 开题报告应该怎么写
- 我们应该怎么写程序?
- 我们应该怎么写程序?
- 投标方案应该怎么写?
- 如下SQL应该怎么写?
- 头文件应该怎么写
- 代码注释应该怎么写
- 基本轮播图应该怎么写
- 程序员简历应该怎么写?
- 要不要加油?
- java学习笔记10
- linux man查看函数帮助提示没有函数手册页条目的解决方法
- hdu_4462 Scaring the Birds 暴力搜索
- 一种基于tomcat平台将用户后台服务程序加入servlet的方法
- main函数究竟应该怎么写?
- 死锁
- Working with hashCode and equals methods in java
- C语言的那些事——函数部分(2)
- node.js (感觉很好,虽转载一留后用)
- 在iOS开发中使用FMDB
- 网络开发的得利助手,浏览器开发人员工具
- SAP FICO新总账功能解析
- C语言的那些事——函数部分(3)