文章目录
宏是编译软件特定功能的实现,在编译前执行,有许多非常有用的功能。首先介绍最常用的宏,#define, 它是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。范例如下所示:
1.简单类型
- 1.简单类型
- 2.宏函数
#define
#define PI 3.1415926
2.宏函数
#define ()
#define A(x) (x)
【注意】在宏函数中,带参数的宏的展开,可能需要用括号维持替换目标的整体性(当然不是所有的都要或者都能加圆括号,变量或者表达式可加)。宏替换其本质就是编译前的字符串替换,编译是按替换后的文本进行编译。
#define中的三个特殊符号:#,##,#@ #define Conn(x,y) x##y #define ToChar(x) #@x #define ToString(x) #x
x##y表示x和y两个目标链接起来 int n = Conn(123,456); /* 结果就是n=123456;/ char str = Conn(“asdf”, “adf”); /结果就是 str = “asdfadf”;/
#@x 表示给x加上单引号 #x 表示给x加上双引号
ANSI标准说明了五个预定义的宏名。它们是: LINE /(两个下划线),对应%d/ FILE /对应%s/ DATE /对应%s/ TIME /对应%s/ FUNCTION:宏在预编译时会替换成当前的函数名称