49 votes

Application non valide de sizeof à un type incomplet avec une structure

J'ai une structure où je mets toutes les informations sur les joueurs. C'est ma structure :

 struct player{
   int startingCapital;
   int currentCapital;
   int startingPosition;
   int currentPosition;
   int activePlayer; 
   int canPlay;      
};

Et c'est mon principal :

 #include <stdio.h>
#include <stdlib.h>
#include "header.h"


int main(int argc, char *argv[])
{  int s,i,numOfPlayers;
   struct player *players;
    printf("Give the number of players: \n");
    scanf("%d",&numOfPlayers);

    players = (struct player *)calloc(numOfPlayers,sizeof(struct player));


   system("PAUSE"); 
  return 0;
}

Je demande à l'utilisateur de donner le nombre de joueurs puis j'essaye d'allouer la mémoire nécessaire. Mais j'obtiens cette erreur de compilateur que je n'arrive pas à comprendre :

 invalid application of `sizeof' to incomplete type `player'  

7voto

oiyio Points 1001

La cause d'erreurs telles que « Application non valide de sizeof à un type incomplet avec une structure ... » est toujours l'absence d'une instruction d'inclusion. Essayez de trouver la bonne bibliothèque à inclure.

3voto

alexfrigo Points 41

Votre erreur s'affiche également lorsque vous essayez d'accéder au sizeof() d'un tableau externe non initialisé :

 extern int a[];
sizeof(a);
>> error: invalid application of 'sizeof' to incomplete type 'int[]'

Notez que vous obtenez un array size missing erreur sans extern mot - clé.

0voto

morte69 Points 1

Je pense que le problème est que vous mettez #ifdef au lieu de #ifndef en haut de votre fichier header.h

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X