




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UNIX 环环境下境下 C 语语言言编编程程规规范范 版本号 v1.0.2 上海华腾软件系统有限公司 二年一月 修改历史 第 1 页 上海华腾软件系统有限公司 文件修改记录: 日期版本号修改人修改描述 2000-01-12v1.0.1李凌云初稿 2000-01-16v1.0.2李凌云在第九章中增加了更多的书写规范 目录 第 1 页 上海华腾软件系统有限公司 目目 录录 1.命名命名规则规则1 1.1.常量命名1 1.2.宏定义命名1 1.3.变量命名基本规则1 1.3.1.基本数据类型的前缀名1 1.3.2.其他数据类型变量的前缀名2 1.4.作用域名3 1.5.函数命名4 1.6.文件命名4 1.6.1.C/EC/PC源程序文件4 1.6.2.自定义头文件5 1.6.3.SQL命令文件6 1.7.目录树结构及命名6 2.注注释释使用使用规规范范7 2.1.共同性规则7 2.2.源程序功能说明7 2.3.变量功能说明7 2.4.函数功能说明7 2.5.过程算法描述8 2.6.修改标识说明9 3.数据数据说说明及定明及定义规义规范范10 4.函数函数说说明及定明及定义规义规范范11 5.C 语语句使用及句使用及书书写写规规范范12 5.1.条件判断语句IF-ELSE.12 5.2.多分支判断语句SWITCH-CASE.13 5.3.禁止使用的语句、函数及用法14 6.嵌入式嵌入式 SQL 语语句使用及句使用及书书写写规规范范16 6.1.SELECT 语句.16 6.2.INSERT 语句.17 6.3.UPDATE 语句 .17 6.4.DELETE 语句17 6.5.SQL CURSOR 的使用.17 6.5.1.CURSOR的定义.18 6.5.2.OPEN CURSOR语句18 6.5.3.FETCH CURSOR语句18 6.5.4.与CURSOR操作有关的其他SQL语句.18 6.6.SQL 的事务处理19 6.7.SQL 的异常处理19 目录 第 2 页 上海华腾软件系统有限公司 6.8.其他 SQL 规范.19 7.头头文件文件结结构构规规范范21 8.源程序源程序结结构构规规范范22 9.其他其他书书写写规规范范23 10.附附录录24 正文 第 1 页 上海华腾软件系统有限公司 1. 命名规则命名规则 1.1.常量命名常量命名 程序中常量命名以“cn”开头,后面紧跟由英文字母和数字组成的名字,不包 含常量的数据类型。名字的第一个字符应为大写英文字母,名字中使用大小写英 文字母分节各单词,名字的总长度不设限制(只要符合 C 编译)。例如以下的常量 命名是规范的: const double cnPI = 3.14159; const int cnSizeOfArray = 100; const char cnGreetingMsg = “Hello”; 以下的常量命名不符合规范的: /* Underline is not allowed. The S of size should be capitalized. */ const int cnsize_of_array = 100; 1.2.宏定义命名宏定义命名 宏定义的命名由大写英文字母、数字和下划线组成,各单词之间用下划线 “_”分开。宏定义的名字总长度不设限制(但应符合 C 编译器的规定)。以下为符 合规范的宏定义名字: #define MAX_MSG_LEN 1024 #define MY_STRING “This is correct.” #define MAX(X, Y) int n; n = X; X = Y; Y = n; 需要注意的是,有些宏名字可能会被各模块重复定义,如 OK、FAIL 等,为了使 各模块中的宏名字不相重,本规范建议在宏名字前加上模块标识,如 #define TSOCKET_OK 0 #define TSOCKET_FAIL -1 但这一条不是强迫的。以下的宏定义命名是不符合规范的: /* Lower letter is not allowd. */ #define Max_Buf_Len 2048 正文 第 2 页 上海华腾软件系统有限公司 1.3.变量命名基本规则变量命名基本规则 程序中所有变量的命名遵循以下的组成规则: + 其中作用域名区分函数内局部变量、模块内全局变量和全局变量;类型前缀名是 单个或几个不同基本数据类型的组合,基本数据类型前缀名在以下各节作说明; 变量的自定义名字由英文字母和数字组成,使用大小写字母区分各单词,首字符 为大写英文字母。整个变量名的总长度不设限制(只要符合 C 编译器的规定就行) 。 1.3.1.基本数据基本数据类类型的前型的前缀缀名名 短整型变量前缀名 短整型(short)变量的类型名为n,例如: short nShortVar; 整型变量前缀名 整型(int)变量的类型名为i,例如: int iIntegerVar; 长整型变量前缀名 整型(long)变量的类型名为l,例如: long lLongVar; 单精度浮点型变量前缀名 单精度浮点型(float)变量的类型名为f,例如: float fFloatVar; 双精度浮点型变量前缀名 双精度浮点型(double)变量的类型名为d,例如: double dDoubleVar; 正文 第 3 页 上海华腾软件系统有限公司 单个字符型变量前缀名 单个字符型(char)变量的类型名为c,例如: char cCharVar; 字符串变量前缀名 字符串变量(char )的类型名为s,例如: char sStringVar20; void 型变量前缀名 void 型变量的类型名为v,例如: void vVoidVar; 1.3.2.其他数据其他数据类类型型变变量的前量的前缀缀名名 枚举型变量前缀名 枚举型(enum)变量的类型名为e,例如: enum eEnumVar = “Sun”, “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat” ; 无符号(unsigned)变量前缀名 无符号变量是在其基本数据类型名前加上字母u,例如无符号整 型变量的命名为: unsigned int uiUnsignedIntVar; 指针型变量前缀名 指针型变量是在其基本数据类型名前加上字母p,例如指向无符 号整型变量的指针变量命名为: unsigned int *puiPtrUnsignedIntVar; 数组型变量前缀名 数组型变量是在其基本数据类型名后加上字母a,例如整型数组 正文 第 4 页 上海华腾软件系统有限公司 变量命名为: int iaIntArrayVar10; 字符数组的类型为: char caCharArrayVar10; 注意,字符数组与字符串的定义其实是一致的,只是在程序中有不同的 用途而已,字符串变量定义为为: char sStringVar10; 字符串数组定义为: char saStringArrayVar510; 数据库宿主变量前缀名 数据库宿主变量命名加前缀h和大写字母的表名,不含基本数据 类型名和作用域名,表名与域名间用下划线_分开,域名在变量中一律 用大写字母表示,例如: char hBCTL_BANK_NAME30; 表示数据表 BCTL 中 bank_name 字符类型域的宿主变量。 数据库游标命名 数据库游标命名不遵循以上的命名规则,数据库游标名全由大写 英文字母和数字组成,英文单词间使用下划线_分隔,在自定义名最后 加后缀名“_CUR”,例如 CURSOR_NAME_CUR 就可以作为一个游标名。 自定义类型变量前缀名 自定义类型名前一律加上字符T,而变量名前一律加上字符t,但 不必再加自定义类型名。例如,有自定义结构 typedef struct int iIntVar; double dDoubleVar; T_MyStruct; 正文 第 5 页 上海华腾软件系统有限公司 可以定义结构变量为, T_MyStruct tMyStruct; 函数指针变量前缀名 函数指针变量名前只需加字符p即可,如以下定义了有一个整型 参数并返回整型值的函数指针: int (*pMyFunc)(int iIntVar); 1.4.作用域名作用域名 变量的作用域主要分函数内有效的局部变量、模块内有效的全局变量(static 型的全局变量)和全局变量(在整个应用范围内有效的变量),对于函数内局部变 量其作用域名为空,即上述各小节中定义的变量缺省的都是函数内局部变量。对 于模块内有效的全局变量,其作用域名为m。而对于应用范围内的全局变量,其 作用域名为g,此作用域名应加在类型前缀名的前面,例如定义一个应用范围的 全局整型数组应写为, int giaIntArrayVar10; 而定义相同类型的一个函数局部整型数组,其定义应写为, int iaIntArrayVar10; 对于模块内的全局变量,应定义为 static 型,其定义应写为, static int miaIntArrayVar10; 1.5.函数命名函数命名 函数名的组成为+,所有的公共库函数必须都有 模块名,比如 TCP/IP 通讯类的公共库函数,此类函数应有模块名如为 tcp,则所 有对外开放的库函数调用都应以 tcp 开头,例如 tcpConnect()可以是 TCP/IP 类公 共库函数的一个调用名。所有非公共库函数名的定义中,模块名可以被省略。自 定义功能名的命名方法与变量命名中的自定义名一致。 正文 第 6 页 上海华腾软件系统有限公司 1.6.文件命名文件命名 文件包括 C 源程序文件、嵌入式 C 源程序文件、C 源程序头文件、数据文件、 配置文件、日志文件、UNIX SHELL 命令文件、SQL 命令文件、帮助文件、二进制 可执行文件等。 文件名按下列规则组成,即.,文件名由小写英文字母 和数字组成(SQL 宿主变量定义头文件除外),主文件名的长度目前暂不设限制, 但建议尽可能控制在八个字符(含)以内,扩展名应控制在三个字符(含)以内。扩 展名用来区分文件的类型,目前已设定以下的文件类型(扩展名): c 代表普通 C 源程序 ec 代表嵌入式(Embedded)C 源程序,这里主要是指嵌入式 SQL/C 源程 序 pc 代表 Pro*C 的源程序 h 代表 C 源程序头文件 dat 代表数据文件 cfg 代表配置文件 log 代表日志文件 sh 代表 UNIX SHELL 命令文件 sql 代表 SQL 命令文件 mak 代表 make 脚本文件 txt 代表描述性或帮助文件,如 readme.txt 无扩展名代表二进制可执行文件 对于同一种类型(扩展名相同)的文件,其又可以按用途、运行时间或其他因 素将主文件名分成更细的名字组成规则,以下各节将对不同类型文件的主文件 名命名作更具体的规定。 1.6.1.C/EC/PC 源程序文件源程序文件 C/EC/PC 源程序文件目前按照程序用途分有:公共函数库源程序、联机服务 正文 第 7 页 上海华腾软件系统有限公司 源程序、批量服务源程序等,所以 C/EC/PC 源程序的主文件名将分为 +两部分。目前设定的用途名有: b 代表批量(Batch)源程序 s 代表联机服务(Server)源程序 r 代表公共函数库(Common Routine Library)源程序 1.6.1.1.批量源程序批量源程序 批量源程序以b开头,源程序中按运行时间的不同分为:周批量、旬批量、 月批量、季批量、年批量和不定期批量,按批量用途分可以分为:报表类批量、账 务更新类批量、维护工具类批量等,所以批量源程序的主文件名组成规则为: +。 目前设定以下的几种批量时间段: w(Weekly)代表周批量 t(Ten-daysly)代表旬批量 d(Daily)代表日批量 m(Monthly)代表月批量 q(Quarterly)代表季批量 y(Yearly)代表年批量 o(Other)代表不定期或与日期无关的批量 目前设定以下的几种批量用途: r(Report)代表报表类批量 此类批量不修改数据表或文件,只生成不同的报表,可以在多次运 行而对数据不产生任何副作用。 u(Update)代表账务更新类批量 此类批量会修改数据表或文件,如账务更新等,一般只能在规定时 段运行一次或多次(如果允许的话),不能随意多次运行。 正文 第 8 页 上海华腾软件系统有限公司 m(Maintain)代表维护工具类批量 此维护工具类批量程序可能会修改数据表或文件,但一般多次运 行不会对数据产生副作用。比如按时间或剩余记录条数进行数据清理的 程序,即使运行多次也不会将不该清理的数据误清理掉。但按照运行次 数清理数据的程序(即每运行一次该程序清理掉一部分数据)则不应属 于此类。 比如,源程序 bdu*.ec 为日批量账务更新类 ESQL/C 源程序,而 bmm*.c 为 月批量维护类 C 源程序。 1.6.1.2.联机服务源程序联机服务源程序 联机服务(Server)源程序名以s开头,暂无其他要求。 1.6.1.3.公共函数库源程序公共函数库源程序 公共函数库源程序名以r开头,暂无其他要求。 1.6.2.自定自定义头义头文件文件 目前头文件主要有普通 C 头文件和 SQL 宿主变量定义头文件两种,所有头 文件都以h为扩展名,主文件名在原则上与相关的 C/EC 源程序同名,但对于 SQL 宿主变量定义头文件的主文件名则以h开头,以大写英文字母和数字表示 的数据表名作为余下部分的命名。 例如,ssvrprg.h 可能为 C 源程序 ssvrprg.c 或 ssvrprg.ec 的头文件,而 hBCTL.h 一定是数据表 BCTL 的宿主变量定义头文件。注意,“ssvrprg.h”的第一 个s不是必要的,头文件可以不必遵循 C/EC/PC 源程序文件的命名规定,因为有 正文 第 9 页 上海华腾软件系统有限公司 很些头文件不是给一个 C/EC/PC 源程序专用的。 1.6.3.SQL 命令文件命令文件 SQL 命令文件以sql为扩展名,主文件名没有特别规定,但对于数据表的创 建命令文件的命名应遵循以下的规定:所有数据表创建文件以c开头(代表 Create),以大写英文字母和数字组成的表名为余下部分的主文件名,例如 cBCTL.sql 为数据表 BCTL 的创建脚本(文件中可以包括索引文件的创建和权限 设置)。 1.7.目录树结构及命名目录树结构及命名 UNIX 操作系统具有多级目录树结构,所以各类文件可以按用途分类放在 不同的目录下,以下是缺省的目录树结构: src inc bin Module or Application Name lib bch svr lib sbin etc bch svr lib db sql unl db bch svr . . bch svr tux 正文 第 10 页 上海华腾软件系统有限公司 2. 注释使用规范注释使用规范 2.1.共同性规则共同性规则 C 语言注释在源程序和头文件中是以行注释的形式出现,使用一对斜杠和 星号(/* comment */)括起来,从第一个斜杠开始到最后一个斜杠(含)为止最多共 占 79 列宽,如下面所示: 1 2 3 4 5 6 7 1234567890123456789012345678901234567890123456789012345678901234567890123456789 /*/ /*Comments are placed right here. The total length of the line is 79 columns.*/ /*You may put blank space(s) to the left and right as margins. */ /*/ 根据注释在源程序中说明对象的不同,注释可以大致分为程序功能注释、变 量功能注释、函数功能注释、算法描述注释和修改标识注释几类,在以下的几个 小节中将会具体描述各类注释的使用规范。 2.2.源程序功能说明源程序功能说明 源程序功能说明注释结构如下: /*/ /* NAME OF THE SYSTEM OR PRODUCT */ /*/ /* PROGRAM NAME: noname.c */ /* DESCRIPTIONS: You should describe the major function of the program here. */ /* More lines should be added from this position. */ /*/ /* MODIFICATION LOG */ /* DATE PROGRAMMER DESCRIPTION */ /* YYYY-MM-DD Last, First Initial Version Creation */ /* YYYY-MM-DD Last, First A brief description of the change */ /* More description may be put here. */ /* YYYY-MM-DD Last, First Other change */ /*/ 正文 第 11 页 上海华腾软件系统有限公司 2.3.变量功能说明变量功能说明 变量主要通过取用合适的名字来说明变量的意义或功能,而不是靠使用注 释来说明其用法,本规范不建议使用变量的注释说明。 2.4.函数功能说明函数功能说明 函数功能说明必须使用以下的结构: /*/ /* FUNC: FunctionName(parameters definitions); */ /* INPUT: The input parameters and their usage may be put here, but this is */ /* not a must. */ /* OUTPUT: Same as INPUT */ /* RETURN: The possible values and meanings may be placed here, but it is */ /* still not a must. */ /* DESC: You should describe the major function of the program here. */ /* More lines should be added from this position. */ /*/ 对于每一个函数,包括主函数 main()在内,在其被定义时,函数原型 FUNC 域和功能描述 DESC 域必须给出,输入 INPUT 域、输出 OUTPUT 域、返回值 RETURN 域只对公共库函数定义才是必要的,一般源程序中的普通函数说明可 以不给出这三个域。 2.5.过程算法描述过程算法描述 过程算法描述意在说明某个处理过程的解释,这有时是必要的,但切记安排 太多的算法描述在源程序中,因为有时它们可能会适得其反。如果要对某段过程 处理进行解释,可以使用以下的结构: 1 2 3 4 5 6 7 1234567890123456789012345678901234567890123456789012345678901234567890123456789 /*/ /* You may put the comments right here. If the comment is very short, you */ /* may align it to the center. For example, */ /* A Short Comment Demonstration */ /* or put it to the left, example follows. */ /* Another short comment example. */ 正文 第 12 页 上海华腾软件系统有限公司 /* The start position of the left slash(/) varies based on the start */ /* position of the relevant statement. However, the end position of the */ /* slash should always be put at the 79th column. */ /* In some condition-judgment statements, comments may follow the */ /* conditions with the right slash ending at the 79th column. For example,*/ /* if (conditions) /* Comments may also be placed here. */ /* So as the casestatement. */ /* switch (variable) */ /* */ /* case value1: /* Comments may also be placed here. */ /* break; */ /* */ /*/ if (1) /* Comments for FunctionName() should be put from this column. */ FunctionName(); 2.6.修改标识说明修改标识说明 修改标识主要是在程序中指明是在何时由何人修改了程序,配合过程算法 描述可以说明修改部分的前因后果。修改标识的组成为: + 例如,Robert Wang 在 2000 年 5 月 12 日修改了一段程序,他的修改标识为 RW000512。在源程序中,他可以用以下的方法标识他的修改: 1 2 3 4 5 6 7 1234567890123456789012345678901234567890123456789012345678901234567890123456789 /*/ /*Roberts comment may be placed before the first change. His modification*/ /*ID may be put somewhere in the comment box, for example at the bottom of*/ /*the comment box. Note that no begin mark and end mark is allowed for the*/ /*change, even if the change is as long as several lines. RW000512 */ /*/ if (1) /* Whatever statement is placed here. */ FunctionName(); 切记,太多的修改标识会降低源程序的整洁性和可读性,各版本程序间的差 正文 第 13 页 上海华腾软件系统有限公司 异应通过专用的版本控制工具给出,而不是完全依赖于修改标识及其注释,此法 只对简单的修改有意义。源程序修改达到一定次数时,应在下一次修改时,将不 再需要的修改标识及其注释一起清除,以维持源程序的整洁性和可读性。 正文 第 14 页 上海华腾软件系统有限公司 3. 数据说明及定义规范数据说明及定义规范 各常量、宏定义、自定义结构申明,函数原型说明应定义在 C 头文件中,而 各类型变量定义应说明在 C 源程序文件中,有关其命名方法请参见第一章命名 规则。 能够使用局部变量解决逻辑问题的应尽可能使用局部变量,尽可能地少使 用全局变量。 源程序中一般不建议直接使用除零以外的常数(包括字符串常数),所有常 数应该要么定义为常量、要么定义为宏,这将有利于源程序的维护。变量长度可 以使用 sizeof()得到,应尽可能地不直接使用常数标识长度。 对于所有自定义结构或联合变量都应事先使用 typedef 说明其自定义类型, 给出类型名,然后再定义其变量实例。有关自定义类型名和变量名的命名方法请 参见第一章命名规则。 正文 第 15 页 上海华腾软件系统有限公司 4. 函数说明及定义规范函数说明及定义规范 每个 C 函数都应有原型申明,然后再是函数体的定义。 每个函数都应有返回值说明,如果不需要返回值,则应申明返回值为 void 型。 函数参数申明应注意以下的用法,即能够使用传值的情况则使用传值参数 (不包括字符串和自定义结构类型的参数),对于字符串和自定义结构类型的参 数应该使用相应的指针类型而不是传值,且如果可以使用 const 修饰前缀应尽可 能使用它,以保证实参对函数的不可修改性。 函数的参数个数不宜太多,虽然本规范暂不设限制,但当需要使用较多参数 时,应使用自定义结构来处理这种情况。 对于无参函数,应将参数类型定义为一个“void”,而不是不写参数定义,例 如: void FunctionName(void); 对于库函数定义应注意函数的可见性(或作用域),所有不需要向外公开的 局部函数应使用 static 修饰符加以说明。同样的规则也适用于某些公共库程序中 的全局变量。 正文 第 16 页 上海华腾软件系统有限公司 5. C 语句使用及书写规范语句使用及书写规范 本章中对 C 语言中部分常用的语句给出使用的规则,同时也规定部分禁用 的语句。 5.1.条件判断语句条件判断语句 if-else 条件判断语句中 if 的判断条件包含在一对圆括号( )中,当其中条件较多或 较复杂时,条件应按适当的逻辑结构分行排列,如下所示: if (iIntVar1 = 0 else void Function1(void) /* Complex statements may be put here. */ 对于 if-else 语句的嵌套禁止采用以下的方式编写: if (condition1) /* Processing logic may be put here. */ else if (condition2) /* Processing logic may be put here. */ else if (condition3) /* Processing logic may be put here. */ 应该写为: if (condition1) /* Processing logic may be put here. */ else if (condition2) /* Processing logic may be put here. */ else if (condition3) 正文 第 18 页 上海华腾软件系统有限公司 /* Processing logic may be put here. */ 注意嵌套不能超过三层。 5.2.多分支判断语句多分支判断语句 switch-case switch-case 语句不允许嵌套使用,即在 case 后的语句中不能再出现另一个 switch-case 语句的分支。 对于每一个 case 的后面,应都有 break 语句标识其结束点,即使在 break 之 前已有 return 语句或 exit()函数调用或 continue 语句。 switch-case 语句一定要有 default 的处理部分,后面也应有 break 语句。 case 后的语句个数不宜太多,本规范建议其后的语句个数不超过 10 条 C 原 子语句,特别是多重 if-else 语句嵌套。如果需要,可以另写一个函数调用来处理。 case 后的判断值应使用常量或宏定义,并通过注释说明其意义(注释方法请 参见前文),应尽可能不使用常数。 以下是一个符合规范的 switch-case 语句例子。 switch (iIntVar) case VALUE_1: /* Description of VALUE_1 */ Function1(); break; case VALUE_2: /* Description of VALUE_2 */ iIntVar2 = iIntVar1; if (iIntVar2 + iIntVar3 0) Function2(); /* Other function calls may be put here. */ return; break; 正文 第 19 页 上海华腾软件系统有限公司 default: /* Unknown Value */ ErrorHandler(); break; 5.3.禁止使用的语句、函数及用法禁止使用的语句、函数及用法 除了在前面已经提到的不允许或不建议使用的用法外,本节中将给出更多 的禁止使用的语句和用法。 禁止使用 goto 语句。 禁止使用 setjmp()和 longjmp()函数调用。 禁止使用问号帽号(condition) ? (cnValue1) : (cnValue2)表达式。 禁止使用逗号表达式,即不允许使用 nIntVar3 = nIntVar2 +, 3; 不建议在同一个语句中嵌套使用赋值表达式或+、-表达式,虽然这种 用法对 C 编译器无二义性,但它们具有可读性差的问题。即使使用这种 语句,必须保证在理解上无二义性。 例如: iIntVar2 = iIntVar1 +; 虽无二义性,但更规范的用法应为: iIntVar2 = iIntVar1; iIntVar1 +; 又如: iIntVar2 = *piIntVar1 +; 规范的用法应为: piIntVar1 +; iIntVar2 = *piIntVar1; 如果写成以下的表示法,尚可接受: iIntVar2 = *(piIntVar1 +); 还有: iaIntArrayiIntVar + = 0; 规范的用法应为: iaIntArrayiIntVar = 0; 正文 第 20 页 上海华腾软件系统有限公司 iIntVar +; 以下的用法是特许的,但也仅此几种特殊: for (iIntVar = 0; iIntVar 0 and FIELD_NAME4 。 再包含数据库表结构文件,如 hBCTL.h 等,这些头文件属于自定义头文 件,它们应包括在双引号中,如“hBCTL.h”。 再包含说明其他自定义的头文件,如 myfile.h,这也应包括在双引号中。 如果此 C 源程序含有嵌入式 SQL 语句,则在此处应定义 SQL 的全局变量, 比如: EXEC SQL include sqlca; 在程序中应尽可能少用或避免使用自定义的全局变量,但如果一定要用全 局变量,则应在此处定义,请注意全局变量的命名规范。 在全局变量定义后,可以进行函数的原型说明。主函数 main()不必进行原型 说明,因为 main()函数应总是整个程序中第一个被定义的函数(如果源程序有主 函数时)。 主函数 main()的定义以及其他函数的定义可以安排在此处,请注意函数的 定义及使用规范,并加上注释以说明功能和用法。 正文 第 29 页 上海华腾软件系统有限公司 9. 其他书写规范其他书写规范 在上文中已经提到了许多 C 程序的书写规范,以下的部分是对上文的补充。 在 C 源程序和头文件中, 书写采用紧缩递进格式。 每行最多只能有一条 C 语言语句。 缺省的书写分隔符只有空格和换行符,如果需要使用 TAB 键作为分隔 符,则应使用 4 位空格作为一个 TAB 键的缩进宽度,且应保证当所有 TAB 键替换为 4 位空格后,程序仍能保持良好的紧缩递进风格。 除了字符及字串常数外,源程序和头文件中不应含有其他不可见字符 (不包括 TAB 键)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 混凝土预制构件生产与运输方案
- 电动汽车充电桩跨平台互联互通方案
- 2025-2030中国履带吊车市场竞争趋势展望及投资效益分析报告
- 2025-2030中国小型汽油机行业消费格局及销售渠道模式分析报告
- 高速公路桥梁抗震设计方案
- 江苏省南京市梅山高级中学2026届化学高三第一学期期末考试模拟试题含解析
- 2025年卡通袜行业研究报告及未来行业发展趋势预测
- 2025年电玩具制造行业研究报告及未来行业发展趋势预测
- 新安全生产法试题库及答案
- 公司安全生产法试题及答案
- 2025至2030年中国泥炭行业市场深度分析及投资战略咨询报告
- 工会帮扶救助课件
- 2025年新高考全国一卷地理试题及答案解析
- 热压罐安全操作规程
- 入职合同里的保密协议竞业协议
- 2025年长沙市中考数学真题(含答案)
- 2025年9月新版劳务用工合同范本(可规避风险)
- 浙江宁波江北区重点达标名校2026届中考三模语文试题含解析
- 2025年高考英语全国一卷真题(含答案)
- PC构件吊装专项施工方案(修改1)
- 中国钾离子电池行业市场前景预测及投资价值评估分析报告
评论
0/150
提交评论