c源文件中的反斜杠

时间:2017-02-08 09:43:20

标签: c video hevc

我遵循与不同行相同的代码:

frame_rate = (float)
                ( ( ( frames * media_timescale) + \   //WHY???
                    ( media_duration >> 1 ) ) /
                 media_duration);

我不明白源文件中反斜杠的作用是什么? 另外,为了计算帧速率,我们可以按照以下步骤进行:

frame_rate = (float) ( (  frames * media_timescale) / media_duration);

是否有任何特定的意图来编写第一类代码?

4 个答案:

答案 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,它总结了在调用编译器时发生的翻译阶段(编译,如果你愿意):

  
      
  1. 删除紧跟着换行字符的每个反斜杠字符(\)实例,拼接物理源代码行以形成逻辑源代码行。只有任何物理源线上的最后反斜杠才有资格成为此类拼接的一部分。非空的源文件应以换行字符结尾,在进行任何此类拼接之前,该字符不应立即以反斜杠字符开头。
  2.   

因此,从您的示例开始,由于反斜杠和换行符的组合,第一行有效地拼接(加入)第二行。