(一)
这几天正在看
ATMEL
的
ARM
处理器
AT91SAM7X256
,在其官方的头文件中发现有如下宏定义:
#defineSPI0_PINS(AT91C_PA17_SPI0_MOSI
|\
AT91C_PA12_SPI0_NPCS0
|\
AT91C_PA13_SPI0_NPCS1|\
AT91C_PA16_SPI0_MISO
|\
AT91C_PA14_SPI0_NPCS2
|\
AT91C_PA18_SPI0_SPCK
|\
AT91C_PA15_SPI0_NPCS3)
就很纳闷,这一个反斜杠是什么个意思呢?网上搜索了一下,才发现原来反斜杠除了转义字符的作用外,
还有强制换行的作用,真心觉得自己了解的基本知识太少了哇!有时候一个语句太长,一行写不下,或者
显得不美观,为了便于阅读,可以将较长的语句拆分成两行甚至多行,除了最后一行之外,在每一个分行
后面加一个反斜杠
“
\
”
,这样编译的时候,系统会自动将这几个分行读成一个语句处理。比如:
1)
用在宏定义中:如上例所示
2)
用在
printf
中,语句太长,需要切分,也需用到反斜杠;
3)
用
“//”
进行单行注释时反斜杠也同样适用。
但若要取反斜杠的本意,则需要在反斜杠之前再加一个反斜杠才能正确表示。
那么上面所看到的宏定义就不难解释了!
(二)
在写代码的时候遇到代码超长的情况下为了代码的美观及方便测试,
故需要涉及到代码的换
行问题,以下讨论了几种的情况:
1
、
#define
的宏
宏定义是以“
\
”换行,如:
#defineMAX(a,b)\
((a)
2
、关键字的换行
关键字换行支持:
(+-*/%=,|&^~||&&==!=)
以及括号等,均能作为换行符号。
3
、字符串的换行