宏定义在C语言源程序中允许用一个标识符来表示一个字符串,称为“宏” ,被定义为“宏”的标识符称为“宏名”....一般而言,预处理器发现程序中的宏后,会用宏等价的替换文本进行替换,如果替换的字符串中还包含宏,则继续替换这些宏....#define EOF -1
#define True 1
#define False 0
宏定义有价值的特性包括:助记,易更改,可移植....通过指定结构体类型和成员名称作为参数,offsetof宏会返回该成员在结构体中的偏移量。
(不懂如何计算结构体成员偏移量的可以移步我的这篇博客:【C语言】结构体的大小是如何计算的?...3 : 4 ;
int a = 4 ;
码农写法
上段代码的问题在于没有保证宏体被替换后整体的优先级最高,因此我们修改一下上面的宏定义,给后面的表达式整体带上括号,使宏体在被替换后仍能保证优先级最高: