web-dev-qa-db-ja.com

エラー: ')'トークンの前にプライマリ式が必要です(C)

voidを返すcharacterSelection(SDL_Surface *screen, struct SelectionneNonSelectionne sel)という名前の関数を呼び出そうとしています。

これは .h私が呼び出すしようとする関数の:

struct SelectionneNonSelectionne;
void characterSelection(SDL_Surface *screen, struct SelectionneNonSelectionne);
void resetSelection(SDL_Surface *screen, struct SelectionneNonSelectionne);

私のメイン関数では、次のように呼び出します:

characterSelection(screen, SelectionneNonSelectionne);

コンパイルすると、次のメッセージが表示されます。

 error: expected primary-expression before ')' token

includesを作成しました。私のstructという2番目の引数を誤って呼び出したと思います。しかし、私はネット上で理由を見つけることができません。

私が何を間違えたのか、ご存知ですか?

14
Flo

タイプSelectionneNonSelectionneの変数を作成する必要があります。

struct SelectionneNonSelectionne var;

その後、その変数を関数に渡します

characterSelection(screen, var);

タイプ名SelectionneNonSelectionneを渡すため、エラーが発生します。

21
ninja

関数呼び出しはオブジェクトで実行する必要があります。これと同等のことをしています:

// function declaration/definition
void foo(int) {}

// function call
foo(int); // wat!??

つまり、オブジェクトが必要な型を渡します。これは、CまたはC++では意味がありません。あなたがする必要があります

int i = 42;
foo(i);

または

foo(42);
2
juanchopanza

オブジェクトではなく、引数として型を渡します。テストのタイプがSelectionneNonSelectionneである場合、characterSelection(screen, test);を実行する必要があります。

2
ForceBru