
关于c语言的那些事
shengnan_wu
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于标准C语言的预定义宏
标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义。下面预定义宏表,被我抄了下来。__LINE__ 当前程序行的行号,表示为十进制整型常量__FILE__ 当前源文件名,表示字符串型常量__DATE__转换的日历日期,表示为Mmm dd yyyy 形式的字符串常量,Mmm是由asctime转载 2012-10-26 21:35:02 · 762 阅读 · 0 评论 -
嵌入开发中C语言程序优化
下面是网络上收集关于ARM的C代码优化方法,在嵌入开发中应该有用: [声明:以下方法非本人发现和总结,均为有心之人无私贡献,谢谢他们的劳动与分享!]========================================================================================C数据类型 1. C语言的程序优化与编译器和硬件系统转载 2012-12-12 17:03:08 · 1641 阅读 · 1 评论 -
由已知结构体里的某个成员名及该成员地址获取该结构体指针
1.在很多OS里面几乎都会用到链表 , 一般的链表的节点(结构体)都维护着一个list(结构体) , 如果是单向链表 , 则list里面只有一个元素next指针 , 指向下一个节点的list .如果是双向链表 , 则list里面由两个元素:previous指针和next指针 ,其中previous指向上一个节点的list , next指向下一个节点的list . 下面我画出了双向链表的典型原创 2012-12-07 08:25:41 · 8684 阅读 · 2 评论 -
关于函数式宏定义的典型用法及易错点
1.函数体直接使用宏定义不管有没有返回值都不能作赋值运行的左右值 . 如下图示:错误提示: 2.通过使用小括号()把函数体括起来使用宏定义可以得到该函数体最后一条语句运算结果,这里还需要注意 ,不能漏了' ; ',如下图示:打印结果如下: 3.一般情况下使用多语句宏定义时 ,最好使用do{...}while(0)或者({})的形原创 2012-12-07 06:17:15 · 10641 阅读 · 0 评论 -
关于gcc编译器对for空循环的优化
上图是下面函数进行gcc编译不添加-O2优化选项的反汇编程序,可以看出不优化时,汇编出来的程序确实是我们所期待的。进行了循环延时。void delay(unsigned long dly){ for(; dly > 0; dly--);}上图是前一个函数进行gcc编译添加-O2优化选项的反汇编结果,可以看出使用了-O2优化后,整个delay函数里面的for空循环被直原创 2012-11-16 12:27:28 · 6025 阅读 · 0 评论 -
c语言中 ## 连接符与# 符
##连接符号,用在带参数的宏定义中将两个子串在编译时候联接起来,组成一个新的字串。但是不可以把##符放在字串最前面或最后面,#符是把传过来的参数当成字符串进行替代。其中的参数都不能是变量。如下例子:输出结果如下:原创 2012-10-26 21:06:01 · 1300 阅读 · 0 评论 -
变参函数的内部实现(来自《一步一步写嵌入式系统》)
_INTSIZEOF(n):这个宏是用来计算各种数据类型按照int的字节数对齐后的结果,假如sizeof(n)=1,2,3,4,那么这个宏应该返回4,若为5,6,7,8,那么这个宏返回8,...所以这个函数方程应该:_INTSIZEOF(n)=(sizeof(n)-1+sizeof(int))/sizeof(int);这个函数优化既得以上宏定义。va_start(ap,v):这个宏主要是利原创 2012-10-26 21:31:16 · 545 阅读 · 0 评论 -
函数指针及含参函数指针做参数的实现
函数指针是指向函数的指针变量。c在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针指向的地址处。有了指向函数的指针变量后。可以通过该指针变量调用函数,函数指针有两个用途:调用函数、做函数的参数:调用函数,如下所示:输出结果如下:由以上可以说明成功调用。 b.无参函数指针做参数的实现,如下(标准写法)所示:输出结果如下原创 2012-10-26 20:59:13 · 12692 阅读 · 2 评论 -
ABI和EABI和OABI
ABI和EABI和OABIhttp://en.wikipedia.org/wiki/Application_binary_interfaceABI(Application binary interface)应用程序二进制接口在计算机软件中,ABI在一个计算机应用程序和操作系统或者另一个应用程序之间做低级接口。这个接口包含了以下内容:·data type,si转载 2012-10-26 20:50:30 · 900 阅读 · 0 评论 -
指定基址,寻找已知偏移量到指定范围第一个'1'的位到该偏移量的距离(都以bit为单位)
已知条件:基址base,搜索区间[offset,offset+width),求该区间第一个为’1’的位到offset的距离(以bit为单位).如下图示:2.基本思路: 1)获取第offset位所在变量,取该变量指针cp 2)获取p到搜索的结束位总共需要检测的变量数num_valiable 3)先把*cp右移使得offset位移到第原创 2012-12-13 00:01:44 · 1506 阅读 · 1 评论