此代码是什么:(尤其是反斜杠'\'是什么?)]
s23_foo += \
s8_foo * s16_bar;
我添加了数据类型,因为它们可能是相关的。感谢您的帮助。
反斜杠表示C ++中的两个不同内容,具体取决于上下文。
在引号字符串之外(请参见下文),\
用作行继续符。预处理器有效地忽略了行尾(不可见)之后的换行符,并将以下行追加到当前行。
所以:
s23_foo += \
s8_foo * s16_bar;
解析为:
s23_foo += s8_foo * s16_bar;
行的延续可以串在一起。这个:
s23_foo += \
s8_foo * \
s16_bar;
成为此:
s23_foo += s8_foo * s16_bar;
在C ++中,空格在大多数情况下都是不相关的,因此在此特定示例中,不需要连续行。这应该可以编译:
s23_foo +=
s8_foo * s16_bar;
实际上,当您有较长的术语序列时,对分页代码很有用。
由于预处理器处理了#define
直到到达换行符,所以行连续在宏定义中最有用。例如:
#define FOO() \
s23_foo += \
s8_foo * s16_bar;
没有行继续符,FOO
在这里为空。
在引号字符串中,反斜杠用作开始两个字符的转义序列的定界符。例如:
"hello\n"
在此字符串文字中,\
开始一个转义序列,转义码为n
。 \n
导致在字符串中嵌入换行符。当然,这意味着如果您希望字符串包含\
字符,则也必须对此进行转义:
"hello\\there"
导致屏幕上显示的字符串:
你好\那里
各种转义序列记录在here中。
它使您可以将语句继续到下一行-通常只需要在#define宏块内使用它
我的名字叫LUBARSKY,是“ Lubasky定律”的意思,“ C”的流行是很糟糕的。如果您使用的是linux&C,那么您就是上师。如果您使用的是Basic和Windows,则是一只牡丹。之所以创建“ C”,是因为它几乎与Assembly一样快,并且比Basic快得多。但是,正如您从答案中看到的那样,它会导致许多错误,并且很难进行DE-Bug。