web-dev-qa-db-fra.com

C - erreur: la taille de stockage de «a» n'est pas connue

Ceci est mon programme C ...

#include <stdio.h>

struct xyx {
    int x;
    int y;
    char c;
    char str[20];
    int arr[2];
};

int main(void)
{
    struct xyz a;
    a.x = 100;
    printf("%d\n", a.x);
    return 0;
}

C'est l'erreur que je reçois ...

Appuyez sur ENTRÉE ou tapez la commande pour continuer

 13structtest.c: Dans la fonction 'main': 
 13structtest.c: 13: 13: erreur: la taille de stockage de 'a' n'est pas connue 
 13structtest.c: 13 : 13: avertissement: variable inutilisée 'a' [-Wunused-variable] 
21
user361697

Votre struct s'appelle struct xyx mais a est de type struct xyz. ne fois que vous avez corrigé cela, la sortie est 100 .

#include <stdio.h>

struct xyx {
    int x;
    int y;
    char c;
    char str[20];
    int arr[2];
};

int main(void)
{
    struct xyx a;
    a.x = 100;
    printf("%d\n", a.x);
    return 0;
}
23
ta.speot.is

Dites-le comme ceci: struct xyx a;

4
Kerrek SB

vous définissez la structure comme xyx mais vous essayez de créer la structure appelée xyz.

4
Dolan Gish

typo correcte de

struct xyz a;

à

struct xyx a;

Mieux vaut essayer typedef, facile à b

4
Dave A

Vous définissez votre structure comme xyx, mais dans votre principal, vous utilisez struct xyz a;, qui crée uniquement une déclaration directe d'une structure différemment nommée.

Essayez d'utiliser xyx a; au lieu de cette ligne.

3
Matthew

Pour tous ceux qui ont ce problème, c'est une erreur de frappe. Vérifiez l'orthographe de vos struct delcerations et votre struct

3
Miles C

Dans ce cas, l'utilisateur a fait une erreur de définition et d'utilisation. Si quelqu'un a fait un typedef à une structure, la même chose doit être utilisée sans utiliser struct. Voici l'exemple.

typedef struct
{
   int a;
}studyT;

Lors de l'utilisation dans une fonction

int main()
{
   struct studyT study; // This will give above error.
   studyT stud; // This will eliminate the above error.
   return 0;
}
2
Vinay Shukla