C ++函数调用后花括号的含义

时间:2013-01-26 21:52:03

标签: c++ syntax

我正在阅读关于Doom 3源代码的代码质量的博客文章,我已经陷入了一段我无法理解的C ++代码。我应该说我不是C ++程序员。

违规代码如下:

Sys_StartAsyncThread(){                          // The next look runs is a separate thread.
    while ( 1 ){
        usleep( 16666 );                         // Run at 60Hz
        common->Async();                         // Do the job
        Sys_TriggerEvent( TRIGGER_EVENT_ONE );   // Unlock other thread waiting for inputs
        pthread_testcancel();                    // Check if we have been cancelled by the main thread (on shutdown).
    }
}

(取自http://fabiensanglard.net/doom3/index.php,主题为“展开循环”)

这看起来是一个闭包作为参数传递给Sys_StartAsyncThread()的返回值 - 但据我所知,这在C ++中是不可能的,并且Sys_StartAsyncThread()也是void类型,所以这是怎么回事?

可以找到Sys_StartAsyncThread()的定义{。{3}}。

3 个答案:

答案 0 :(得分:6)

这看起来像一个错字。根据{{​​3}},Sys_StartAsyncThread();之后应该有分号。

答案 1 :(得分:4)

正如人们所提到的,这只是我使用的符号,用于每个方法的内容:展开循环和方法。

在您提供的示例中,大括号之间的块实际上是方法的内容

  

Sys_StartAsyncThread

答案 2 :(得分:2)

这只是一个错字。正确的代码是

Sys_StartAsyncThread();
    {
        // Create a thread that will block on hTimer in order to run at 60Hz (every 16 milliseconds).
        // The Thread calls common->Async over and over for Sound mixing and input generation.

        while ( 1 )
        {
            usleep( 16666 );
            common->Async();
            Sys_TriggerEvent( TRIGGER_EVENT_ONE );
            pthread_testcancel();
        }
    }

您可以在此处http://fabiensanglard.net/doom3/doom3_unrolled.php查看,如您所推荐的页面中所述。

  

有关详细信息,请参阅我用作地图的完全展开循环   在阅读代码时。