【问题标题】:Can you define a function returning bool in C?你能在 C 中定义一个返回 bool 的函数吗?
【发布时间】:2011-10-26 06:55:20
【问题描述】:

我在 C 或 C++ 方面的经验很少,所以我不了解该语言中的一些各种快捷方式和常见任务。

我正在查看类似于此的游戏代码:

bool
update_frame (void)
{
  // Various bits of code
  return TRUE;
}

这是游戏的主循环。我认为它类似于:

while (true) {
  // do stuff
}

我会在 C# 或 Java 中使用它。这是怎么回事吗?

【问题讨论】:

  • 您能否更清楚地了解您的问题是什么?
  • 你需要更清楚你的问题。但是要回答名义上的问题....是的,您可以在 C 中定义一个返回 bool 的函数。

标签: c loops


【解决方案1】:

我认为(至少标题暗示)您想知道如何在 C 中指定 truebool,是吗?

ANSI C (C89/C90) 没有为布尔值提供特殊的数据类型;布尔功能使用整数表示,其中 0 代表“假”,其他一切都被解释为“真”。

不过,C99 通过定义适当的宏来提供“内置支持”,正如您在 answer 中看到的那样。

因此,您正在查看的代码使用 C99(检查标头是否包含在某处)或 bool 是 typedef 宏,因此请查看是否有一个

typedef int bool;

或在代码中找到的类似内容。它说“返回 TRUE”这一事实意味着后者,因为 TRUE 在 ANSI C 中非常常见,并且最常被定义为

#define TRUE 1

所以你可以再次注意这一点。

至于您的另一个问题,该函数可能会做什么,它可以实现类似于“游戏循环”/while(true) 循环,如下所示:

while (update_frame()) { /* render current state to screen */
  /* do game logic */
}  

【讨论】:

    【解决方案2】:

    这只是一个返回布尔值的简单函数。但是,正如你所说的游戏,我认为在代码中的某处(可能是主函数)它将此函数设置为更新函数,使用如下命令:

    setUpdateFrameFunc(update_frame);
    

    在这一行之后,它将创建一个线程并在该线程上一遍又一遍地运行此函数。最后,函数上的代码似乎在 while(true) 循环中运行。

    【讨论】:

      【解决方案3】:

      无论您要问的是什么,我可以说您的代码片段在 C、Java 和 C# 中的含义完全相同:第一个是返回 bool 的函数,第二个是无限循环。

      又是什么问题?

      【讨论】:

      • 你的回答好像是评论。
      【解决方案4】:

      bool 只是一种数据类型,就像 int、float....等一样

      在 c 中,你不能给函数的名称与任何数据类型或关键字相同。

      在您的代码中,我认为 bool 不是您的函数名称的一部分...它只是该函数的返回类型

      【讨论】:

        【解决方案5】:

        你提到的函数没有任何技巧,它只是一个简单的函数....循环可能在调用这个函数的其他函数中。

        提示:尝试定位调用函数以便更好地理解。

        【讨论】:

          【解决方案6】:

          此代码可能使用游戏引擎。引擎将每秒调用update_frame 30/60/X 次。然而,在这两者之间,它可能会执行其他任务。

          不过,它可能用作 while(true) 循环。

          【讨论】:

            猜你喜欢
            • 2021-08-07
            • 2021-01-10
            • 2018-08-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-10-11
            • 2015-05-29
            相关资源
            最近更新 更多