宏定义,想说爱你不容易!!
来源:互联网 发布:java 18.3 编辑:程序博客网 时间:2024/05/17 03:57
从学C开始,就知道宏定义用起来能使程序容易理解。有时候在编程时,能帮我们不少忙!!
不过最近,却老是被它给卡住。
在学C时,自己并不怎么用宏定义,只知道它是在预编译时给展开,也就是字符的替换。
后来,第一次感受到宏定义的方便是在改写一个 LPC2103的DS18B20的驱动程序,
看到他们将IO操作的两条语句用宏定义来操作
#define SET_IO {IO0DIR |= DQ; IO0SET |=DQ;}
感觉在编写程序时方便了好多。
后来自己渐渐也用这种方式来编写IO的操作语句,
一只好用,没有出什么大错(可能有小的错误,只是自己没注意),
今天,一同学在改写一个液晶的驱动函数时
定义的是#define SET_LCD_E 1 << 7
在使用时,*IOPORT_B &= ~SET_LCD_E;
在调试时发现取反后~SET_LCD_E的值是了0xff00;
开始,还真看不出是哪里有毛病,只得用了两个变量,
看他们的结果咋样,单步调试后发现结果正常,
这才再次回去看宏定义,
发现这展开后变成了
*IOPORT_B &= ~ 1 << 7;
这肯定不对,
把上边的宏定义加个括号后,
#define SET_LCD_E (1 << 7)
再运行,正常!
看来宏定义的括号,真是有用呀!!
看来以后这宏定义用得时候,真得小心!!
虽然给了点小意外,不过还是挺有用的!!
关键还是自己C还有待加强!!
- 宏定义,想说爱你不容易!!
- 羽版 想说爱你不容易
- 共享软件:想说爱你不容易
- 裸奔,想说爱你不容易
- C#想说爱你不容易
- .NET, 想说爱你不容易
- .NET, 想说爱你不容易
- QT4,想说爱你不容易!
- 想说爱你不容易--ZThread~~
- 想说爱你不容易
- Qt4,想说爱你不容易
- CMMI,想说爱你不容易
- CSDN 想说爱你不容易
- 河南人,想说爱你不容易
- OpenSocial,想说爱你不容易
- 程序员,想说爱你不容易
- Hibernate, 想说爱你不容易
- 共享软件:想说爱你不容易
- 额
- 小红点使用
- 创建Linux下可运行的超小型ELF可执行文件(3)
- rand和srand函数用法
- 创建Linux下可运行的超小型ELF可执行文件(4)
- 宏定义,想说爱你不容易!!
- UCGUI 消息机制实现分析
- JAVA中关于异常需要注意的地方
- 【翠字营原创】 应用程序在读写SQLite数据是否需要自己加锁保障?
- Flex 遍历组件的实现
- java
- 读取Excel
- 数据库设计模式
- 海量数据面试题整理