您好我正在理解一个具有以下构造的C代码,
#define ABD 1:0
这是什么意思?特别是":"在#define这里做什么?
答案 0 :(得分:8)
int res = (n == 10)? ABD;
现在,如果n = 10
,则res = 1
其他res= 0
它用于三元运算符?:
因为MACRO
,基本上ABD
被1:0
取代
#define ABD 1:0
答案 1 :(得分:2)
#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
的MACRO,则在预处理阶段,ABD
的所有出现都会被1:0
替换。< / p>