Можете ли вы определить функцию, возвращающую bool в C? - PullRequest
2 голосов
/ 13 августа 2011

У меня очень мало опыта в C или C ++, поэтому я не понимаю некоторые из различных ярлыков и общих задач в языке.

Я смотрю код игры, который выглядит примерно так:

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

Это основной цикл игры.Я думаю, что это похоже на что-то вроде:

while (true) {
  // do stuff
}

, который я бы использовал в C # или Java.Это то, что здесь происходит?

Ответы [ 6 ]

1 голос
/ 13 августа 2011

Этот код, вероятно, использует игровой движок. Двигатель будет вызывать update_frame 30/60 / X раз в секунду. Между тем, он может выполнять другие задачи.

Возможно, он работает как цикл while (true), хотя.

0 голосов
/ 13 августа 2011

Я думаю (по крайней мере, из названия следует), что вам интересно, как можно указать true и bool в C, да?

ANSI C (C89 / C90) не обеспечиваетспециальный тип данных для логических значений;логическая функциональность выражается с помощью целых чисел, где 0 обозначает «ложь», а все остальное интерпретируется как «истина».

C99 обеспечивает «встроенную поддержку», определяя соответствующие макросы, как вы можете видеть вthis answer .

Итак, либо код, который вы просматриваете, использует C99 (проверьте, включен ли где-нибудь заголовок), либо bool является макросом typedef, поэтому посмотрите, есть ли

typedef int bool;

или что-то похожее, что можно найти в коде.Сам факт того, что в нем говорится «возвращать ИСТИНА», подразумевает последнее, поскольку TRUE очень часто встречается в ANSI C и чаще всего определяется как

#define TRUE 1

Так что вы снова можете посмотреть на это.

Что касается вашего другого вопроса, что может делать эта функция, то она может быть реализована аналогично циклу "игровой цикл" / while (true), например:

while (update_frame()) { /* render current state to screen */
  /* do game logic */
}  
0 голосов
/ 13 августа 2011

Это простая функция, которая возвращает значение bool.Но, как вы говорите, это было для игры, я думаю, что где-то в коде (вероятно, основной функции) она устанавливает эту функцию как функцию обновления, с помощью такой команды:, он создаст поток и снова и снова запускает эту функцию в этом потоке.Наконец, кажется, что код функции выполняется в цикле while (true).

0 голосов
/ 13 августа 2011

Что бы вы ни спрашивали, я могу сказать, что ваши куски кода в C, Java и C # означают абсолютно одно и то же: первый - это функция, возвращающая bool, второй - бесконечный цикл.

В чем опять вопрос?

0 голосов
/ 13 августа 2011

bool - это просто один тип данных, такой же как int, float .... и т. Д.

В c вы не можете дать имя функции так же, как любые типы данных или ключевые слова.

В вашем коде я думаю, что bool не является частью имени вашей функции ... это просто возвращаемый тип этой функции

0 голосов
/ 13 августа 2011

Никаких хитростей в упомянутой функции, это просто простая функция .... цикл, вероятно, находится в какой-то другой функции, которая вызывает эту функцию.

Совет: попробуйте найти эту вызывающую функцию для лучшего понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...