现在的位置: 首页 > 综合 > 正文

C语言标识符命名规则

2013年05月06日 ⁄ 综合 ⁄ 共 1277字 ⁄ 字号 评论关闭

预备知识:什么是内部标识符和外部标识符?

A N S I标准规定,标识符可以为任意长度,但外部名必须至少能由前6个字符唯一地区分,并且不区分大小写。这里外部名指的是在链接过程中所涉及的标识符,其中包括文件间共享的函数名和全局变量名。因此外部名abcdefgh和abcdef将被当作同一个标识符处理。

A N S I标准还规定内部名必须至少能由前31个字符唯一地区分。内部名指的是仅出现于定义该标识符的文件中的那些标识符。C语言中的字母是有大小写区别的,因此count Count COUNT是三个不同的标识符。标识符不能和C语言的关键字相同,也不能和用户已编制的函数或C语言库函数同名。

1. 长度限制

    C89 规定,编译器至少应该能够处理 31 个字符(包括 31)以内的内部标识符(Internal Identifier);而对于外部标识符(External Identifier),编译器至少应该能够处理 6 个字符(包括 6)以内的外部标识符。所谓标识符,是指我们为变量(Variable)、宏(Macro),或者函数(Function)等等取的名字。例如 Int Num; 这个语句中的 Num 就是一个标识符。

    最新的 C99 标准规定,编译器至少应该能够处理 63 个字符(包括 63)以内的内部标识符;编译器至少应该能够处理 31 个字符(包括 31)以内的外部标识符。

    事实上,我们可以使用超出最大数目限制的字符来命名标识符,不过编译器会忽略超出的那部分字符。也就是说,如果我们用 35 个字符来命名变量,而那个编译器最多只能处理 31 个字符的变量名的话,那么多出的那 4 个字符就会被编译器忽略,只有前面的 31 个字符有效。有些古老的编译器只能处理 8 个字符以内的标识符,对于这样的编译器来说,标识符 Kamehameha 和 Kamehameko 是等价的,因为它们前面 8 个字符相等。


2. 可用字符和组合规则

    标准规定,标识符只能由大小写英文字母,下划线(_),以及阿拉伯数字组成。标识符的第一个字符必须是大小写英文字母或者下划线,而不能是数字。

           合法命名   非法命名

             Wiggles          $Z]**      /*   $、] 和 * 都是非法字符  */

              Cat2            2cat      /*  不能以数字开头  */

             Hot_Tub         Hot-Tub    /*  - 是非法字符  */

             TaxRate        Tax Rate    /*  不能有空格  */

             _kcab            Don''T     /*  '' 是非法字符  */

操作系统和 C 语言标准库里的标识符一般以下划线开头,这是约定俗成的。因此,我们应该避免使用下划线作为我们自己定义的标识符的开头。

    C 语言是大小写敏感的语言,也就是说,Star、Star、STar,StAr 和 STAR 等都是相互不同的标识符。

    我们不能用关键字和保留标识符来给我们自定义的变量命名。

抱歉!评论已关闭.