Typedef structure

Résolu/Fermé
JeVeuxJusteEtreIngenieure - 21 janv. 2023 à 10:05
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 30 janv. 2023 à 14:27

Bonjour,

Dans quels cas faut-il utiliser "typedef" lorsqu'on définit une nouvelle structure dans un code ?

Merci beaucoup :)))) 


Macintosh / Safari 15.6.1

2 réponses

Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
Modifié le 21 janv. 2023 à 12:36

bonjour,

à chaque fois que tu veux utiliser une définition de type perso:

typedef int ENTIER // pour écrire ENTIER dans le code au lieu de int

(si tu veux absolument écrire en français, par exemple)

typedef struct _toto {

    ......

} TOTO;

//pour écrire

TOTO machin;

//au lieu de

struct _toto machin;
0
JeVeuxJusteEtreIngenieure
21 janv. 2023 à 15:05

Super merci beaucoup ! 

0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
30 janv. 2023 à 14:27

Bonjour,

Je recommande de nommer les structures avec le suffixe _t, tout en minuscule. Ces deux blocs de code sont parfaitement équivalents :

struct _ma_structure_t {
  int attribut1;
  int attribut2;
}

typedef struct _ma_structure_t ma_structure_t; 
typedef struct _ma_structure_t {
   int attribut1;
   int attribut2;
} ma_structure_t;
  • En C et en C++, tu n'es pas obligé(e) d'utiliser un typedef quand tu déclares une structure. Typedef ou pas, tu peux très bien utiliser struct _ma_structure_t dans tout ton code, ce sera parfaitement correct.
  • En C++, tu n'as même pas besoin de faire de typedef, tu pourrais parler indifféremment de struct _ma_structure_t ou directement de _ma_structure (idem pour les classes).
  • En C et en C++, le nom avec ou sans le mot clé struct peut être le même. Tu peux donc parfaitement écrire ne pas utilisé de préfixe _ devant le type intermédiaire :
typedef struct ma_structure_t {
  int attribut1;
  int attribut2;
} ma_structure_t;

Bonne chance

0