目录 1.简单就是美 2. sizeof 3.字节序 4.函数参数 5.返回值 6.强制类型转换 7.swith case 8.字符串 9. 资源释放 10. if 规范 11. 临界资源保护 1.简单就是美 优先级搞不清楚用括号 复合语句太罗嗦,拆成几行来写 编码的三不原则 不要挑战自己的记性 不要挑战自己的耐心 不要挑战编译器的水平 编码的三用原则 能用简单句的,就不要用复杂的技巧 能用成熟代码的,就不要再来一套 能用上工具的,就一定要机械化 Struct xxx { char cA; short sB; long lC; } void main() { char *pchar; pchar = (char *)malloc(7); /* 1—魔鬼的数字;2—申请失败后怎么办? */ mencpy (pchar, “abcdefgh”, sizefo(xxx)); /* 3—内存 */ printf(“%s\n”, pchar); /* 缺少字符串结束符必越界 */ return; /* 5—退出前没有释放内存 */ } 2. sizeof 数据结构是C 语言的基础。C 语言的灵活性很大,程度上在于其数据结构的灵活性。要用好的数据结构,首先要掌握数据结构的大小的计算,系统的每个数据机构,每个变量都会分配到一个对应的存储空间,这个存储空间的大小就是数据结构的尺寸。 sizeof 为编译时的一元运算符,可用来计算任一对象的大小 sizeof 的结果是编译时的常量 sizeof 不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型。如未知存储大小的数组类型,未知内容的结构或联合类型,void 类型等。 3 . 字节序 X86 系统 void QosConfigPolicy(xxx) { ulDestIP = 从命令行读取用户配置的参数; pQosPoliscy->ulDestIP = ulDestIP; return; } 主机处理 void QosClassify(xxx) { Plp = (IP-S*)pData; If(pQosPolicy->ulDestIP == plp->ulDestIP) { Vos_HTONL(pQosPolicy->ulDestIP; DoSomething(); } Return; } 由于历史的原因,世界存在两种字节序标准——BigEndian 和 LittleEndian。Power PC 是大头,X86 是小头。有些 CPU 可以通过寄存器设置支持不同的字节序。如MIPS BigEndian——高位在低字节,地位在高字节 LittleEndian——低位在低字节,高位在高字节 e.g.0x345678 大头内存从低到高存放次序 00,34,56,78;小头内存从低到高存放次序 78,56,34,00 字节序问题广泛存在于设备与设备之间,单板与单板之间,单板与底层之间,只要两个处理单元的字节序不同,这个问题就存在。为了解决不同字...