C 语言标准
什么是标准?标准是对重复性事物和概念所做的统一规定,他以科学技术和实践经验的结合成果为基础,经有关方面协商一致,由主管机构批准,以特定形式发布作为共同遵守的准则和依据。
在这个标准概念大行其道的今天,如果大家在生活中稍微注意一下,其实可以很容易发现,我们生活在一个标准化的世界里,每个产品的外包装或者标签上都会注明相应的执行标准。标准贯穿着我们的衣食住行。。总而言之,标准无处不在。
当然标准具有行业性与地域性。每个国家基本都有自己的标准,这些标准有些是自己独立创造的,但更多的,为了与国际上大部分标准兼容,基本上会使用国际上一些通用的标准,只是改一下名字就可以了。
作为软件行业中的老大哥级人物。C 语言也有自己的标准,而且是国际标准。
如果大家遵循同一个标准,那么就会避免分歧的产生,避免出现很多不必要的麻烦和困扰。按照这统一标准就不会出现不兼容的问题。
我们先来看下 C 语言标准的发展历史:
1. C 语言标准历史
序号 别称 全称
1 C18 ISO/IEC 9899:2018
2 C11 ISO/IEC 9899:2011
3 C99 ISO/IEC 9899:1999
4 C95 ISO/IEC 9899:1990/AMD 1:1995
5 C90 ISO/IEC 9899:1990
6 C89 ANSI X3.159-1989
最新执行的 C 语言的国际标准是序号为 1 的 C18 标准(ISO/IEC 9899:2018 (C18)),这个标准是 2018 年通过的 C 语言国际标准。那么 C 语言的标准中都规定了哪些内容呢?下面我们一起来看下:
2. C 语言标准内容
因为我并没有购买 C 语言的最新标准,所以我找了一点来自于 C 语言标准中描述。下面这段话就通过文字的描述,定义了有关 main 函数的细节:
The function called at program startup is named main. The implementation
declares no prototype for this function. It shall be defined with a return
type of int and with no parameters:
int main(void) { /* … */ }
or with two parameters (referred to here as argc and argv, though any names
may be used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* … */ }
or equivalent;10) or in some other implementation-defined manner.
这里写明了 main 函数是做什么的,应该怎么写,包含了什么参数以及返回值等。正确的 main 函数的正确的书写方法应该是 int main(void) { /* … */ } 或者 int main(int argc, char *argv[]) { /* … */ } 。而不是我们国内随处可以看到的 void main(void) {/* … */} 或者 void main(int argc, char *argv[]) { /* … */ }。这种写法在有的编译器下是会产生错误的,导致编译无法进行。而且这个返回值是可以输出的,可以作为程序是否正确执行的判断,比如你可以用返回值 0 放在程序执行完整后返回,返回 0 就可以判断程序完整执行了。如果返回了其他数值,那么程序就出现了异常。