C中“\”的用法?
usage of "\" in C?
我正在查看这段代码,但我无法弄清楚为什么在 && 运算符之后使用“\”?
if ((*(u32*)(kaddr + 0x64) == *(u32*)(kaddr + 0x78)) && \
(*(u32*)(kaddr + 0x68) == *(u32*)(kaddr + 0x88)))
不需要反斜杠,除非这是 #define
的一部分。
来自 C 规范 §5.1.1.2
Each instance of a backslash character (\
) immediately followed by a
new-line character is deleted, splicing physical source lines to form
logical source lines.
但不需要,因为 C 语言不要求将 if
语句放在一行上。
行尾前的 \
将下一行粘附到当前行。由于 C 通常忽略空格,这在声明宏时非常有用。
它的用途之一是宏定义,基本上它告诉编译器不要在行尾停止,而是让编译器继续。示例:
#define ASSERT_NULL(value) \
do { \
if((value) == NULL) { \
return true; \
} \
} while(NULL)
现在,如果您不放置 \
,您将无法获得所需的功能。
我正在查看这段代码,但我无法弄清楚为什么在 && 运算符之后使用“\”?
if ((*(u32*)(kaddr + 0x64) == *(u32*)(kaddr + 0x78)) && \
(*(u32*)(kaddr + 0x68) == *(u32*)(kaddr + 0x88)))
不需要反斜杠,除非这是 #define
的一部分。
来自 C 规范 §5.1.1.2
Each instance of a backslash character (
\
) immediately followed by a new-line character is deleted, splicing physical source lines to form logical source lines.
但不需要,因为 C 语言不要求将 if
语句放在一行上。
行尾前的 \
将下一行粘附到当前行。由于 C 通常忽略空格,这在声明宏时非常有用。
它的用途之一是宏定义,基本上它告诉编译器不要在行尾停止,而是让编译器继续。示例:
#define ASSERT_NULL(value) \
do { \
if((value) == NULL) { \
return true; \
} \
} while(NULL)
现在,如果您不放置 \
,您将无法获得所需的功能。