宏定义

在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直接加宏名和值

原文地址:https://www.cnblogs.com/CHYI1/p/5394383.html