打印

C语言提高代码效率的几种方法

[复制链接]
561|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
playergatsby|  楼主 | 2016-6-27 17:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一段完美的代码不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存)。设计的代码比实际执行更难。因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中。本文向你介绍规范你的C代码的5种方法。


1、在可能的情况下使用typedef替代macro.当然有时候你无法避免macro,但是typedef更好。

typedefint* INT_PTR;INT_PTR a ,b;# define INT_PTR int*;INT_PTR a ,b;在这个宏定义中,a是一个指向整数的指针,而b是只有一个整数声明。使用typedef a和b都是整数的指针。


相关帖子

沙发
playergatsby|  楼主 | 2016-6-27 17:50 | 只看该作者
2、在一个逻辑条件语句中常数项永远在左侧。

int x = 4;if (x = 1){ x = x + 2;printf("%d",x);// Output is 3 }

int x = 4;if (1 = x){ x = x + 2;printf("%d",x); // Compilation error }

使用"="赋值运算符,替代"=="相等运算符,这是个常见的输入错误。常数项放在左侧,将产生一个编译时错误,让你轻松捕获你的错误。注:"="是赋值运算符。b = 1会设置变量b等于值1. "=="相等运算符。如果左侧等于右侧,返回true,否则返回false.

使用特权

评论回复
板凳
playergatsby|  楼主 | 2016-6-27 17:50 | 只看该作者
3、确保声明和定义是静态的,除非您希望从不同的文件中调用该函数。

在同一文件函数对其他函数可见,才称之为静态函数。它限制其他访问内部函数,如果我们希望从外界隐藏该函数。现在我们并不需要为内部函数创建头文件,其他看不到该函数。

静态声明一个函数的优点包括:

A)两个或两个以上具有相同名称的静态函数,可用于在不同的文件。

B)编译消耗减少,因为没有外部符号处理。

使用特权

评论回复
地板
playergatsby|  楼主 | 2016-6-27 17:51 | 只看该作者
4、节约内存(内存对齐和填充的概念)

struct { char c;inti;short s;}str_1;struct { char c;shorts;inti;}str_2;假设一个字符需要1个字节,short占用2个字节和int需要4字节的内存。起初,我们会认为上面定义的结构是相同的,因此占据相同数量的内存。然而,而str_1占用12个字节,第二个结构只需要8个字节?这怎么可能呢?

请注意,在第一个结构,3个不同的4个字节被分配到三种数据类型,而在第二个结构的前4个自己char和short可以被采用,int可以采纳在第二个的4个字节边界(一共8个字节)。

5、使用无符号整数,而不是整数的,如果你知道的值将永远是否定的。

有些处理器可以处理无符号的整数比有符号整数的运算速度要快。(这也是很好的实践,帮助self-documenting代码)。

使用特权

评论回复
5
jouney316| | 2016-6-27 21:43 | 只看该作者
学习了。可是在单片机中,一般都是用的无符号,基本用不到有符号值的。

使用特权

评论回复
6
l科科1987| | 2016-6-28 20:37 | 只看该作者
macro是什么呢,我怎么基本没用过这个东东呢?

使用特权

评论回复
7
原味_郭| | 2016-6-29 08:43 | 只看该作者
l科科1987 发表于 2016-6-28 20:37
macro是什么呢,我怎么基本没用过这个东东呢?

macro 是宏
function是函数
macro 是替换
function 是调用

function是单独的一段程序,程序中只是调用它,而macro 使用处,编译时会用全部替换成定义的语句。
使用 function省程序code ,使用macro不省程序,只省源文件 .c

使用特权

评论回复
8
enginezhong| | 2016-6-29 17:16 | 只看该作者
struct这个在M3中,经常对不齐,还需要手动设置地址,太麻烦了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

82

帖子

1

粉丝