2011-11-21 12 views
-1

CとSDLで小さなゲームを作って、楽しい方法でSDLを使い始めようとしています。私の主なゲームのループでfpsをキャップするために使用される、私のTimer構造体と関数。しかし、私はたくさんの取得。:合計約25のエラー、「エラーC2054を期待 『(』 『T』を辿るために」文法上の誤りがあります

ここにある:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

#include "SDL.h" 

struct Timer { 

    int startTicks; 
    int pausedTicks; 

    int paused; 
    int started; 

}; 

void Init(Timer *t) 
{ 
    t->startTicks = 0; 
    t->pausedTicks = 0; 
    t->paused = 0; 
    t->started = 0; 
} 

void StartTimer(Timer *t) 
{ 
    t->started = 1; 
    t->paused = 0; 

    t->startTicks = SDL_GetTicks(); 
} 

void StopTimer(Timer *t) 
{ 
    t->started = 0; 

    t->paused = 0; 
} 

void PauseTimer(Timer *t) 
{ 
    if(t->started == 1 && t->paused == 0) 
    { 
     t->paused = 1; 
     t->pausedTicks = SDL_GetTicks() - t->startTicks; 
    } 
} 

void UnpauseTimer(Timer *t) 
{ 
    if(t->paused == 1) 
    { 
     t->paused = 0; 
     t->startTicks = SDL_GetTicks() - t->pausedTicks; 

     t->pausedTicks = 0; 
    } 
} 

int GetTicks(Timer *t) 
{ 
    if(t->started == 1) 
    { 
     return t->pausedTicks; 
    } 
    else 
    { 
     return SDL_GetTicks() - t->startTicks; 
    } 

    return 0; 
} 

いただきましたここで間違って事前に感謝します! 。

+0

すべてのファイルが見つかりましたか? –

+0

「エラーC2054」はどの欄に表示されていますか?私はそこにエラーを検索し始めるだろう:) – kol

答えて

4

すべてのものをtの変数はタイプstruct TimerではなくTimer

であるか、あるいは、としてそれを定義する必要があります。

typedef struct sTimer { 
    int startTicks; 
    int pausedTicks; 
    int paused; 
    int started; 
} Timer; 

Timerを「ファーストクラス」のタイプにする。 Cでは

+0

おかげでメイト!にスポット! – Jason94

1

、あなたのいずれかが、この実行する必要があります。

struct Foo 
{ 
    ... 
}; 

... 

void bar(struct Foo *p); 
     ^

またはこの:[私は2番目のバージョンを好む

typedef struct Foo 
{^
    ... 
} Foo; 
^
... 

void bar(Foo *p); 

を。 ]

1

最初のエラーを見つけてそれから作業してください。しばしば、他の多くのものが最初のものの結果です。

+0

s /通常/多くの場合、/ – glglgl

+0

の多く@glglgl:ありがとうございました。 – mouviciel

関連する問題