×
嵌入式 > 技术百科 > 详情

C语言main函数的标准定义

发布时间:2020-05-28 发布时间:
|

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


 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
激光跟踪仪市场2023年有望达5.216亿美元