宏定义
在Linux kernel的代码中,宏定义使用的频率非常的高,宏定义有很多好处,提高程序的可读性,可扩展性,方便修改代码.
宏定义名通常大写,大致分为
一,普通常量
#define SIZE 1
这个是简单的把难记的常量取一个好记又表示作用的名字
二,表示字符串
#define STR(x) #x
这个宏替换的时候会把STR里面的内容转化为字符串.如STR(gcc$C)="gcc$C";
三,类似数组
#define ABC(x) find##x //可以变成类似与数组的变量
四,定义函数或者函数指针
定义简单的函数:#define MAX(a,b) ((a)>(b)?(a):(b))
定义函数指针:
#define SHOW(str) show(str)
void show(int str){
printf("%d
",str);
}
----------------------------------------------------------------------------
系统预定义的宏
__FUNCTION__ //表示当前的使用该宏的函数
__LINE__ //表示当前该宏出现的行号
__FILE__ //表示当前宏出现的文件名
为了调试方便有些调试信息需要按需求打开和关闭,使用
#ifdef A
.....
#dendif 来进行控制
当已经预定义了名为a的宏则调试打开,否则不进行编译这一段代码,可以用gcc -DA1 来进行添加 -D直接加宏名和值