Bonjour,
Est-ce que j'ai le droit de remplacer "typeDonnee val" par une variable de type structure ci dessous ? :
Code:
1
2
3
4
5
6
7 typedef int typeDonnee; typedef struct elt { typeDonnee val; struct elt *suivant; } typeElt;
Version imprimable
Bonjour,
Est-ce que j'ai le droit de remplacer "typeDonnee val" par une variable de type structure ci dessous ? :
Code:
1
2
3
4
5
6
7 typedef int typeDonnee; typedef struct elt { typeDonnee val; struct elt *suivant; } typeElt;
Oui. Tu peux même faire typedef struct maStructure typeDonnee;Par contre, la structure doit être définie, pas seulement déclarée, sinon tu auras une erreur "type incomplet".
Mais le^doit être tapé après que j'aie défini ma structure n'est-ce pas ? Au plan visuel j'aurai d'abord ma structure et ensuite la définition du typedef.Code:typedef struct maStructure typeDonnee
Pour qu'un identifieur (nom de type, de variable, ou de fonction) soit utilisable quelque part, il doit être défini avant.
C'est la raison pour laquelle les fichiers d'en-têtes existent.
Donc, tu va devoir écrire
C'est à dire:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 typedef struct maStructure typeDonnee typedef struct elt { typeDonnee val; struct elt *suivant; } typeElt; int taille_elt(typeElt *e); struct maStructure{}; int taille_elt(typeElt *e) { int n = 0; while (e!=0) { ++n; e = e->suivant; } }
PS: je crois que je vais finir par écrire mon compilateur C(++) vers français.Citation:
cher compilateur,
J'appellerai le type struct maStructure par le nom typeDonnee.
J'appellerai le type struct elt, défini comme un type de structure contenant un typeDonnee nommé val et un pointeur vers une structure elt nommé suivant, par le nom typeElt.
Soit taille_elt une fonction retournant un int et prenant un argument e qui est un pointeur vers un typeEltSoit [c]maStructure[c] un type de structure vide;
Soit taille_elt une fonction retournant un int et prenant un argument e qui est un pointeur vers un typeElt, défini par ...