一、基本结构
忌用 main()、void main()等不规范格式。
Linux下的返回值“0”表示成功,非值(负值)表示失败。函数的返回值一般只表示成败,函数结果不做返回,而用输出表示。
函数代码一般不要超过两百行,尽量不要使用递归函数,嵌入式中默认栈只有1024k,递归函数容易将栈击穿。
功能函数
输出符
解释
__FILE__
%s
输出当前文件名
__LINE__
%d
输出当前所在行数
__FUNCTION__
%s
输出当前函数名
函数的调用必须处理返回值,例:
返回前应释放志愿,常见为内存释放,例:
参数/函数的命名一般为动实结构:
扇入扇出一般控制在七个以内,
1. 无论是否只有单行代码,
花括弧必须完备,方便后续人员维护开发。
2.针对头文件只作函数变量声明用,函数在库中实现。
3. main函数:
(1)标准main函数格式:
① int main(void){…}
② int main(int argc,char**argv){…}//argc:输入参数个数,不小于1;argv:输入字符串。
(2)main函数返回值:
二、基本语法
1. 循环内少判断,尽量先处理完判断再进行循环。
2. if要配套else,switch要配套deafult
3. 设计优先级时使用小括号“()”区分,不要使用默认优先级。
三、函数
调试:
int ret;
ret =function();
if (ret !=0)
{
printf(…);
return -1;
}
当出现异常时应进行分支处理,在调用函数中使用返回而不退出。
pbuf =malloc(1024);
…
free(pbuf);
intGetVersion();
intSetxxxValue();
扇入:
直接调用该模块的上级模块的个数。
扇出:
模块直接调用的下级模块的个数。
四、内存
1. 分配要处理返回值;
2. 不要频繁分配内存,这样容易产生内存碎片。规避碎片的方法可以使用常驻内存,即不释放多次使用,或者使用 利用哈希表;
3. 保持内存连续性;
4. 使用强制性转换;
5.
遵守谁调用谁释放原则。
五、数组、字符串
熟悉strcpy()、strcmp()、strcat()、strchr()、strstr()等函数。
利用指针偏移控制数组。一般超过1024字节的不再使用数组,而是使用内存分配。
六、结构体
1. 保持关联性
高内聚,低耦合
2. 尽量四字节对齐,例:
int num;
char i;
char j;
char k;
char l;
double n;
32位系统中指针亦是四字节。
3. 利用typedef定义结构体别名。
date:2013-01-20(W)