web-dev-qa-db-fra.com

erreur: expression primaire attendue avant le jeton ')' (C)

J'essaie d'appeler une fonction nommée characterSelection(SDL_Surface *screen, struct SelectionneNonSelectionne sel) qui renvoie un void

C'est le .h de la fonction que j'essaie d'appeler:

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

Sur ma fonction principale, j'essaie de l'appeler comme suit:

characterSelection(screen, SelectionneNonSelectionne);

Quand je compile, j'ai le message:

 error: expected primary-expression before ')' token

J'ai fait le includes. Je suppose que j'interprète mal le deuxième argument, mon struct. Mais je ne trouve pas pourquoi sur le net.

Avez-vous une idée de ce que j'ai fait de mal?

14
Flo

Vous devez créer une variable du type SelectionneNonSelectionne.

struct SelectionneNonSelectionne var;

Après cela, passez cette variable à la fonction comme

characterSelection(screen, var);

L'erreur est due à la transmission du nom de type SelectionneNonSelectionne.

21
ninja

Un appel de fonction doit être effectué avec des objets. Vous faites l'équivalent de ceci:

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

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

c'est-à-dire passer un type où un objet est requis. Cela n’a aucun sens en C ou C++. Tu dois faire

int i = 42;
foo(i);

ou

foo(42);
2
juanchopanza

Vous passez un type en tant qu'argument, pas un objet. Vous devez faire characterSelection(screen, test); où test est de type SelectionneNonSelectionne.

2
ForceBru