这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » main函数的标准定义

共1条 1/1 1 跳转至

main函数的标准定义

助工
2014-10-15 20:17:30     打赏

学过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代码,提高代码的可移植性。


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]