c语言
文章平均质量分 62
只学最有用的已经学不完不做学究
这个作者很懒,什么都没留下…
展开
-
代码风格总结
总体上的代码风格是按照linux 的代码风格。当然linux的代码风格说明不是面面俱到。自己总结一些细节:1.switch如果不需要写break,最好有知识标明: 上面的case是将减法的第二个operande正负颠倒,然后剩下的操作用下面加法的语句,从而完成减法操作。所以减法里的break不需要,但是最好用注释标明。 2、不同的case里如果有处理部分很类似的,可以放在最原创 2012-10-10 14:19:28 · 355 阅读 · 0 评论 -
结构体字节对齐 只看高亮 三原则两注意 & 为什么要字节对齐 & 位域
typedef struct{ int a; char b;}A_t;typedef struct{ int a; char b; char c;}B_t;typedef struct{ char a; int b; char c;}C_t;void main(){ c转载 2013-12-25 11:12:46 · 520 阅读 · 0 评论 -
volatile为什么要修饰中断里的变量
先来个总的介绍:volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如: volatile int i=10; int j = i; ... int原创 2013-06-08 13:29:59 · 7143 阅读 · 2 评论 -
sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl ./`
方法1: 这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我需要把这些资源库的url统一指定到nexus本地中央库.手 工一个个改文件配置有点不太实际,所以google了一下,找到批量替换文件内容的好方法,命令结构如下:find -name '要查找的文转载 2014-07-28 09:20:52 · 2257 阅读 · 0 评论 -
什么时候用指针的指针 **
比如声明u32 **buf这个buf要作为一个函数的参数,这个函数的作用是告诉bufni原创 2014-08-22 10:17:53 · 4625 阅读 · 0 评论 -
看代码如果看到while(1) 加上switch case,就是状态机
看到状态机就表示这段code不止运行一次。原创 2014-08-12 17:22:01 · 2037 阅读 · 0 评论 -
大端模式与小端模式、网络字节顺序与主机字节顺序
http://wxxweb.blog.163.com/blog/static/135126900201022133740759/http://blog.chinaunix.net/uid-790245-id-2037563.html大端模式与小端模式一、概念及详解 在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian原创 2014-08-13 11:00:23 · 721 阅读 · 0 评论 -
gcc编译多个c文件
很简单的问题,但是遇到后却不知道怎么搞了,太low了:gcc a.c b.c -o test 这样就可以了。主要跟makefile混了,makefile混了是因为makefile编译多个文件是因为写好了规则如main: a.o b.ogcc a.o b.o -o maina.o: a.c gcc -c a.c...原创 2014-12-10 16:29:23 · 1043 阅读 · 0 评论 -
c语言注释规范
http://wenku.baidu.com/view/b082631eff00bed5b9f31d58.htmlhttp://wenku.baidu.com/view/a56c8975a26925c52cc5bfd9.html转载 2015-01-05 16:54:48 · 481 阅读 · 0 评论 -
事件驱动编程
查了资料,有点乱,理解这个概念看来不易,先把看过的做下笔记:要看是哪一层的, 例如这个,貌似是对于单任务的操作系统,适用于一些简单那的单片机,这个其实是在一个顺序结构的程序里写了个状态机,然后无限循环里去跑这个状态机,每个状态机对应一个task,有个专门的类实现事件队列,有专门的发送事件的api,每次进入状态机之前都要读取事件,根据事件进去对应的task。这就是事件驱动http原创 2015-03-11 11:14:52 · 1455 阅读 · 0 评论 -
printf 注意 以及无符号数转化有符号数的陷阱
%d 是打印有符号数,如果参数是无符号数,要转化成有符号数%u原创 2014-08-29 09:16:42 · 12614 阅读 · 1 评论 -
inline优于宏定义的地方,及inline不适用的地方
一、inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))为什么要取代这种形式呢,且听我道来: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言转载 2013-01-10 10:00:55 · 593 阅读 · 0 评论 -
回调函数,终于有个讲的明白的了
所以,实现库函数时,库函数的一些功能如果想让用户自己去定制,那此时就留下一个回调函数的参数。调用者调用库函数,库函数又反过来调用调用者自己写的函数,这个过程就叫回调。 简单说,看到一个函数(一般是库函数,普通函数或者自己写的某些api也可以)里的参数有函数指针,这个指针对应的函数就是回调函数。就是:参数有指针函数就是用了回调函数。 =====一直没有看到一篇能把回调函数的作原创 2012-10-09 14:11:21 · 2942 阅读 · 0 评论 -
sdk, IDE的区别
简单的说sdk更底层,IDE是sdk+图形界面开发环境。 先来说windows sdk的概念:微软每推出一个重要的windows版本,一般都会同时推出一个SDK(Software Development Kit)。SDK包含了开发该windows版本所需的windows函数和常数定义、API函数说明文档、相关工具和示例。SDK一般使用C语言,但不包括编译器。高版本VC++包括了SDK所原创 2013-11-05 23:05:57 · 6898 阅读 · 0 评论 -
misra
1 。misra不管operator两边是expression还是变量,基本类型类别必须一样比如S8>u8 不行, u16>u32 可以2。 如果operand是expression,那要求就多了。参看rule10.7u32+u16+16是可以,因为所有的operand在内存中实际都是按照u32来执行的,不会有精度损失问题。U32+(u16+u16)不可以,因为原创 2017-07-04 10:18:00 · 562 阅读 · 0 评论