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

怎样写出工业级的C代码

1. 层次分明;结构清晰 ,模块划分

2.重要tips

a.从词法的角度来看,

熟悉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 x

half
= x >> 1;

9.
at a.c:

char
name[5];

at
b.c

extern
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();

}

时间: 2024-10-04 18:44:44

怎样写出工业级的C代码 (2)的相关文章

如何写出优雅的CSS代码 ?(转)

对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于团队合作和后期的维护:而有的混乱,虽然表达出了最终的效果,然而却晦涩难懂,显然团队成员在读这样的代码时就显得无从下手,更不利于后期的维护了.那么如何写出优雅的代码呢?下面我将以一个很小的项目就以下几个方面简单的表达一下自己的看法,如有不妥,望批评指正. 如何整理一个项目. 如何写出清晰易懂的HTML代码. 如何写出优雅的css代

【整洁之道】如何写出更整洁的代码(上)

如何写出更整洁的代码 代码整洁之道不是银弹,不会立竿见影的带来收益. 没有任何犀利的武功招式,只有一些我个人异常推崇的代码整洁之道的内功心法.它不会直接有效的提高你写代码的能力与速度,但是对于程序员的整个职业生涯必然会带来意想不到的好处. 如果你还是一个在校学生,或者是刚工作没多久的"菜鸟",那么很有必要接触一些这方面的知识的.很显然,它会帮助你更快的适应企业级开发的要求. 1. 为什么需要代码更整洁? 在考虑代码整洁的时候,我们需要明确的一个前提是,这里不讨论代码的对错. 关于什么是

幸福村站——成都传智播客程序员写出你的烧烤代码

又是一个阳光明媚,风和日丽之天,如果作为程序员的你还在键盘上苦苦的想着下一串代码该怎么写的话,那你就弱爆了.俗语说得好,学习要劳逸结合,写代码更是需要清晰的思维,在传智播客Java基础班开班一个月后,班主任决定带着这群"猿猴们"去传说中的"幸福村"放松放松,我们也跟着一起去感受程序员们的烧烤代码的幸福吧! 带着好奇的心理走进了"幸福梅林站",一个又一个的农家乐园开始浮现在我们眼前,那里朴素的民风和美丽的风景让我们暂时忘却了学习上的烦恼和城市里的喧

【知识点】如何写出优雅的CSS代码 ?

对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于团队合作和后期的维护:而有的混乱,虽然表达出了最终的效果,然而却晦涩难懂,显然团队成员在读这样的代码时就显得无从下手,更不利于后期的维护了.那么如何写出优雅的代码呢?下面我将以一个很小的项目就以下几个方面简单的表达一下自己的看法,如有不妥,望批评指正. 如何整理一个项目. 如何写出清晰易懂的HTML代码. 如何写出优雅的css代

用6个字符写出任意的Javascript代码

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用6个字符写出任意的Javascript代码.

利用|,&amp;,^,~,&lt;&lt;,&gt;&gt;&gt;写出高效艺术的代码

简介: 大家在阅读源码的时候经常会看到一些比如下面这样特别难理解的代码. cancelEvent.setAction(MotionEvent.ACTION_CANCEL | (motionEvent.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT)); order = ((order) >> (INDEX_OFFSET -1) + 1) << INDEX_OFFSET; 类似与这种"高大上&

如何写出优雅的css代码?

如何写出优雅的css代码? 对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来井井有条,清晰易懂,这样的代码有利于团队合作和后期的维护:而有的混乱,虽然表达出了最终的效果,然而却晦涩难懂,显然团队成员在读这样的代码时就显得无从下手,更不利于后期的维护了.那么如何写出优雅的代码呢?下面我将以一个很小的项目就以下几个方面简单的表达一下自己的看法,如有不妥,望批评指正. 如何整理一个项目. 如何写出清晰易懂的HTML代码. 如

掌握解决问题的艺术,学会迭代开发,成为协作开发的专家,然后为写出更好的代码而担忧(转)

很多开发人员普遍犯有一个错误,认为他们的工作就是写代码.这不是一个开发人员要做的事情. 一个开发人员的工作是解决问题. 解决问题的一部分过程通常涉及到写代码,但是这部分工作是非常非常小的.开发有用的东西才花更多时间. 明白如何迭代开发,随着对问题有更好的理解,你才能给难题增加一些小功能,因为从头开发完美的产品是不可能的.不用写代码就能验证功能,因为很明显,写代码是相当昂贵的. 用于测试.评测和抛弃想法的系统也是极其重要的,因为要是没有它,整个开发组将耗费越来越多的精力,还有用来帮助他们执行得更有

如何写出没有BUG的代码?

1947年9月9日,美国海军准将 Grace Hopper 在哈佛学院计算机实验室里使用 Mark II 和 Mark III 计算机进行研究工作.她的团队跟踪到 Mark II 上的一个错误,操作人员发现是由于一只飞蛾钻到了 Mark II 的继电器里导致的.团队清除了这只飞蛾,一切恢复正常.当时的工作人员记录了这样一句日志:" First actual case of bug being found. "  这次著名的事件,犹如潘多拉打开了魔盒,从此,程序员的世界里,bug 满天飞