日期:2016-5-25(原创文章,禁止转载)
学过C语言的人都知道,main函数是程序启动的入口函数,每一個C语言程序里有一個main函数,在程序里它是唯独一個不能被其他函数调用的特殊函数。在众多的单片机C语言编译器里对main函数的写法都没有明确的要求,写法非常自由,可以写成带形参的函数,也可以写成无形参的函数,还可以写成返回值為任意数据类型的函数。通用的写法都是:void main () {…}。而根据C99标准的要求,main函数是一個有返回值的函数,而且返回值类型必须為int。下面這段英文描述是从C99标准的PDF文档上复制下來的:
本文引用地址: Program startup
The called at program startup is named e 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代码,提高代码的可移植性。
癫痫患者能生育吗沈阳儿童医院癫痫科