首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

main函数的标准定义

main函数的标准定义

学过C语言的人都知道,main函数是程序启动的入口函数,每一个C语言程序里有一个main函数,在程序里它是唯独一个不能被其他函数调用的特殊函数。在众多的单片机C语言编译器里对main函数的写法都没有明确的要求,写法非常自由,可以写成带形参的函数,也可以写成无形参的函数,还可以写成返回值为任意数据类型的函数。通用的写法都是:void  main () {…}。而根据C99标准的要求,main函数是一个有返回值的函数,而且返回值类型必须为int。下面这段英文描述是从C99标准的PDF文档上复制下来的:

5.1.2.2.1 Program startup

The called at program startup is named main.The implementation declares no

prototype for this .It shall be defined with a return type of int and with no

parameters:

int main(void) { /* ... */ }

or with twoparameters (referred to here as argc and argv,though anynames may be

used, as theyare local to the in which theyare declared):

int main(int argc, char *argv[]) { /* ... */ }

or equivalent;9)or in some other implementation-defined manner.



  从C99标准的规定里可以看出,main函数的标准定义一般为这两种形式:

        第一种形式:

        int main (void)


{


               ……

               return 0;


}




       第二种形式:

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


        {


              ……

              return 0;


        }





  第一种定义main函数不带形参,写起来比较简便。编写单片机C语言程序是不需要通过操纵系统向main函数传递参数的,所以笔者推荐采用第一种标准定义。

标准的意义在于通用,对C语言来讲,符合标准意味着代码的可移植好。如果main函数不符合C99标准也没关系,只要编译器支持,对您的程序没有任何影响。到目前为止,没有哪个C编译器完全遵循C99标准,这都是为了让编译器兼容以前的代码,这也是为什么C标准十几年才修改一次的原因。当然,这并不代表新标准形同虚设,从发展趋势来看,C编译器都会逐渐向新标准靠拢。

既然有了标准我们就应该遵循。我们可以用权威标准来衡量一个代码的优劣,去批判“另类”代码,写出标准的C代码,提高代码的可移植性。
返回列表