C语言编程规范

来源:互联网 发布:mac python环境图标 编辑:程序博客网 时间:2024/06/05 09:42

一、头文件编程规范

三大原则——设计层面:

1、头文件中适合放置接口声明,不适合放实现2、头文件职责单一3、头文件应向稳定的方向包含

八项规则——编码层面:

1、只能通过包含头文件的方式使用其他模块提供的接口,禁止在.c中通过extern的方式使用外部函数接口、变量2、禁止在头文件中定义变量3、禁止在extern“C”中包含头文件4、总是编写内部的#ifdef保护符5、头文件应当自包括6、禁止头文件循环依赖7、禁止包含用不到的头文件(否则多次包含该头文件会有变量重复定义的错误);头文件的包含关系代表一种依赖,头文件变化会引起包含该文件的模块重新编译;8、每一个.c文件应有一个同名.h文件,用于声明需要对外公开的接口

二、函数编程规范

为什么需要函数

1、降低复杂度,易于思考2、便于协同开发3、代码复用,减少代码量4、封装变化5、良好的可移植性

函数规范

1、圈复杂度小于7圈复杂度就是一个函数可以执行的路径条数;2、函数短小(推荐小于50行,一屏)3、嵌套层数小于5单行字符数小于80个,一屏;4、职责单一接受函数名的约束,避免文不对题;5、抽象层次单一避免读者迷失在细节;6、参数不超过3个7、避免重复8、避免重入问题时间上,在函数执行完之前,又一次被调用,称为重入;只有在函数中有对公共资源访问的时候,才会有问题;9、不要返回局部变量

三、语法规范

命名、注释、格式、效率、安全   
内存划分与管理


C语言中内存堆和栈的区别


一般情况下程序存放在Rom(只读内存,比如硬盘)或Flash中,运行时需要拷到RAM(随机存储器RAM)中执行,RAM会分别存储不同的信息,如下图所示:

 

 

内存中的栈区处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的。

栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的;只读区是分配常量和程序代码空间的;以及其他一些分区。

例如,如下main.cpp

[cpp] view plain copy
  1. int a = 0; //全局初始化区   
  2. char *p1; //全局未初始化区   
  3. main()   
  4. {   
  5. int b; //栈   
  6. char s[] = "abc"//栈   
  7. char *p2; //栈   
  8. char *p3 = "123456"//123456\0在常量区,p3在栈上。   
  9. static int c =0; //全局(静态)初始化区   
  10. p1 = (char *)malloc(10); //堆   
  11. p2 = (char *)malloc(20); //堆   
  12. }  
  13. 复制代码  

四、C语言常见问题

1、堆常见问题


2、栈常见问题


3、类型转换

类型转换是用来欺骗编译器的,不会改变内存中的数据;

4、整数溢出
5、字节对齐

自己设计的数据结构时,要与字节对齐无关;

6、字节序

7、危险的字符串操作

原创粉丝点击