Chinaunix首页 | 论坛 | 博客
  • 博客访问: 775054
  • 博文数量: 37
  • 博客积分: 575
  • 博客等级: 中士
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-12 10:43
个人简介

活到老,学到老!

文章分类

全部博文(37)

文章存档

2019年(4)

2018年(4)

2015年(1)

2014年(14)

2011年(1)

2010年(13)

我的朋友

分类: LINUX

2010-05-17 16:24:32

1、为了避免那些只能包含一次的头文件被多次包含,可以在头文件中用编译时

条件来进行控制。例如:
/*my.h*/
#ifndef MY_H
#define MY_H
……
#endif

2、常用预编译指令
#  空指令,无任何效果
#include 包含一个源代码文件
#define 定义宏
#undef  取消已定义的宏
#if  如果给定条件为真,则编译下面代码
#ifdef  如果宏已经定义,则编译下面代码
#ifndef 如果宏没有定义,则编译下面代码
#elif  如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
#endif  结束一个#if……#else条件编译块
#error  停止编译并显示错误信息
#warning 只显示错误信息

3、防止由于各种平台和编译器的不同,而产生的类型字节数
typedef unsigned char boolean; /* Boolean value type. */
typedef unsigned long int uint32; /* Unsigned 32 bit value */
typedef unsigned short  uint16; /* Unsigned 16 bit value */
typedef unsigned char  uint8; /* Unsigned 8 bit value */
typedef signed long int int32; /* Signed 32 bit value */
typedef signed short  int16; /* Signed 16 bit value */
typedef signed char  int8; /* Signed 8 bit value */

4、关键字static
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

5、关键字volatile
1) 并行设备的硬件寄存器(如:状态寄存器)
2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3) 多线程应用中被几个任务共享的变量

6、关键字const意味着“只读”

7、关键字__interrupt定义一个中断服务子程序(ISR)
1) ISR 不能返回一个值。
2) ISR 不能传递参数。
3) ISR 应该是短而有效率的,在ISR 中做浮点运算是不明智的。
4) printf()经常有重入和性能上的问题。

8、关键字Typedef声明一个已经存在的数据类型的同义字
比宏定义#define PS struct s *更好,因为
dPS p1,p2;扩展为struct s * p1, p2;
定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。

 

阅读(1776) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~