我在两个不同的地方看到过这段代码引用,但是我还没有看到任何人提出这个问题,但是在第00339行上似乎有一个空的if块,我只是复制了代码来编译,但是它甚至不会编译,因为这是因为。
if (frame_count >= STREAM_NB_FRAMES) {
/* no more frame to compress. The codec has a latency of a few
frames if using B frames, so we get the last frames by
passing the same picture again */
} else {任何想法或解释为什么会是那样。这是作者在抄写时的错误吗?不管怎么说,在那个街区里发生了什么事?
发布于 2012-02-08 23:40:24
这是没有错误的。该块的if部分确实是空的。
通过使if部分为空并在其他部分执行工作,通常更容易表达逻辑。在这个例子中,if部分有一个注释,专门解释为什么它是空的,为什么没有什么可做的。
该代码是合法的C,并将编译良好。
发布于 2012-02-09 00:04:28
任何半好的编译器无论如何都会删除这个块,并且只留下unless块(除非它也是空的)。
关键是要解释当满足某一重要条件时会发生什么。
https://softwareengineering.stackexchange.com/questions/134069
复制相似问题