我遵循与不同行相同的代码:
frame_rate = (float)
( ( ( frames * media_timescale) + \ //WHY???
( media_duration >> 1 ) ) /
media_duration);
我不明白源文件中反斜杠的作用是什么? 另外,为了计算帧速率,我们可以按照以下步骤进行:
frame_rate = (float) ( ( frames * media_timescale) / media_duration);
是否有任何特定的意图来编写第一类代码?
答案 0 :(得分:5)
这是一个线路延续逃脱。这意味着编译器会将下一行视为当前行的一部分。
它使你在实践中展示的代码
frame_rate = (float)
( ( ( frames * media_timescale) + ( media_duration >> 1 ) ) /
media_duration);
在这种情况下,并没有真正需要它,除非作者可能会将一些风格指南作为要求。
需要行继续来定义"多行"宏,也经常用于长字符串。但除了那些地方,它没有任何实际意义。
答案 1 :(得分:1)
反斜杠用于将长行拆分为2个较短的行,而不表示语句的结尾。这通常在单行语句可能太长而无法阅读时完成。
答案 2 :(得分:0)
反斜杠是续行。除了可读性之外没有区别(每行80个字符通常是大多数样式指南的建议限制)。
请参阅:How can I do a line break (line continuation) in Python?
答案 3 :(得分:0)
我认为没有人能比标准更好地描述这一点。因此,根据C11/section 5.1.1.2p1,它总结了在调用编译器时发生的翻译阶段(编译,如果你愿意):
- 删除紧跟着换行字符的每个反斜杠字符(
醇>\
)实例,拼接物理源代码行以形成逻辑源代码行。只有任何物理源线上的最后反斜杠才有资格成为此类拼接的一部分。非空的源文件应以换行字符结尾,在进行任何此类拼接之前,该字符不应立即以反斜杠字符开头。
因此,从您的示例开始,由于反斜杠和换行符的组合,第一行有效地拼接(加入)第二行。