您的位置:首页 > 编程语言

怎样写出工业级的C代码 (2)

2016-03-22 23:04 387 查看
怎样写出工业级的C代码
1. 层次分明;结构清晰 ,模块划分
2.重要tipsa.从词法的角度来看,熟悉C运算符号的优先级,特别是不能混淆=/&&/+-和移位等操作符之间的顺序:常见容易混淆的顺序包括:算术加减和移位操作:a>>b+1表示a>>(b+1),而非(a>>b)
+ 1;自加/减和->/.运算符号:a->b.c;
++a->b理解编译器对符号解析处理的过程:比如a+++b,到底是a++
+b还是a+
++b;if
( a = b != c) {};
b.从语法的角度嵌套注释不提倡,大部分编译器也不支持;对宏的定义注意前提和局限:比如 #define
max(A,B) A > B? A : B 改成#define
max(A,B) (A)>
(B) ? (A) : (B)在A或者B中含有自加或者自减操作的时候也可能出错;理解assert()宏内部的实现;
c.从语义的角度即使某些看上去没有问题的代码,实际由于堆栈布局、内存分布、表示方法的局限也可能出现不是所期望的代码,比如下面的这些代码:
1
. int (int b){ return
-b;)
2.
int test(){ int
ii; char
c
for
(ii=0;ii < 5; ii++) scanf(“%d”,
&c);}
3.
int a[10];for
(i=0; i<=10;i++) a[i]
= I;
4.
char * getname(char * myname){ char
* local_name;
local_name
= “Huogo”; strcpy(myname,
local_name);
return
local_name;}
5.
int a =5; int b = -3; int
c = a / b; int
d = a % b;
6.
int a = random();int
b = random();int
C = MAX_INT;if
(a + b < c) { ….}
if
( a * b < c) { …..}

7.
int mask = 0xffffff00;long
in_addr = …...;long
out_addr = 0;
out_addr
= mask & in_addr;
8.
int x =;//
get half of xhalf
= x >> 1;
9.
at a.c:char
name[5];
at
b.cextern
char * name;
10.
int a[3][5];
int
* pa[] = a;int
* pb = a[0];int
* pc = &[0][0];
pa++;pb++;pc++;

11.过多假定:
toUper(char
c){ if
(c <= 'z' && c >= 'a') { return
c + 'A' – 'a'; }
return
c;}
int
get_array_size(int * array, int len){ return
len<<2;}
12.
unsigned c; unsigned
char b; int
d;
d
= c; b
= c;

13.
char c = getchar(); while
( c != EOF) { c
= getchar(); }

本文出自 “存储之厨” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: