嗨,我正在理解具有以下结构的 C 代码, #define ABD 1:0
这是什么意思?特别是":"在 #define 这里做什么?
int res = (n == 10)? ABD;
现在,如果n = 10
那么res = 1
其他res= 0
它用于三元运算符?:
所以基本上ABD
被1:0
取代,因为宏
#define ABD 1:0
#define
预处理指令 [AKA MACRO] 可以被视为文本替换。
引用C99
标准中的第 6.10 章,#define
的语义是
# define identifier replacement-list new-line
与您的代码相比
#define ABD 1:0
ABD
是标识符 [也称为宏名称],1:0
是替换列表。除了作为替换列表的一部分之外,:
没有单独的含义。
相关,第6.10.3章,第9段,
表单的预处理指令
# define identifier replacement-list new-line
定义一个类似对象的宏,该宏使宏名称的每个后续实例都替换为构成指令其余部分的预处理标记的替换列表。
因此,如果你有一个像#define ABD 1:0
这样的宏,并且在代码中的某个地方ABD
,在预处理阶段,所有出现的ABD
都将被1:0
替换。