在C中使用“\”?

我正在查看这段代码,但我无法弄清楚为什么在&&运算符之后使用“\”?

if ((*(u32*)(kaddr + 0x64) == *(u32*)(kaddr + 0x78)) && \ (*(u32*)(kaddr + 0x68) == *(u32*)(kaddr + 0x88))) 

该行末尾的\右侧将以下行粘贴到当前行。 由于C通常忽略空格,因此在声明宏时这非常有用。

除非这是#define一部分,否则不需要反斜杠。

来自C规范§5.1.1.2

将删除紧跟着换行符的每个反斜杠字符( \ )实例,拼接物理源行以形成逻辑源行。

但它不需要,因为C语言不要求将if语句放在一行上。

它的用途是宏定义,基本上它告诉编译器不要在行的末尾停止但是继续进行rater。 例:

 #define ASSERT_NULL(value) \ do { \ if((value) == NULL) { \ return true; \ } \ } while(NULL) 

现在,如果你不放\ ,你将无法获得你正在寻找的function。