我正在使用微控制器STM32f100RB。在其中一个头文件中,有一些我无法理解的东西。代码如下。任何人都可以告诉我符号“\”是什么?它是运营商吗?如何理解?
我是新手。如果我做的不对,请告诉我。 谢谢。
#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
((PERIPH) == GPIOB) || \
((PERIPH) == GPIOC) || \
((PERIPH) == GPIOD) || \
((PERIPH) == GPIOE) || \
((PERIPH) == GPIOF) || \
((PERIPH) == GPIOG))
答案 0 :(得分:4)
反斜杠只是告诉预处理器将下一行视为同一行。这是必需的,因为宏是在“单行”上定义的......所以这样可以将多行合并为一行。
请注意,在某些(所有?)预处理器中,反斜杠必须是该行的最后一个字符...包括空格。
答案 1 :(得分:2)
这意味着宏继续在下一行,因为需要在一行上定义宏(\
实际上“转义”新行的符号。)
基本上,你的宏与:
相同#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || ((PERIPH) == GPIOB) || ((PERIPH) == GPIOC) || ((PERIPH) == GPIOD) || ((PERIPH) == GPIOE) || ((PERIPH) == GPIOF) || ((PERIPH) == GPIOG))
正如您所看到的,阅读和理解比您在问题中发布的更难阅读和理解。
答案 2 :(得分:2)
续行是以反斜杠结尾的行,\。将删除反斜杠,并将以下行与当前行连接。没有插入空格,因此您可以在任何地方分割一条线,即使在单词的中间也是如此。 (通常在白色空格中分割线条更具可读性。)
答案 3 :(得分:1)
\是宏是没有什么,但我们只是通知预处理器没有新行下一个语句也在同一行.......
当有一个很大的表达式不能适合一行或者它适合时,它比使用它不是不可读的。它会在预处理器阶段删除。