CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Wtf cette déclaration de structure

Pseudo supprimé
Pseudo supprimé 17 août 2015 à 14:49:59

Salut !
J'ai trouvé ceci dans un code , ça a l'air de marcher , mais je comprends pas trop :(
typedef struct _CEV_Dyn_Array
{/**dynamic Array structure */

unsigned int actInUse, /*utile in use*/
actSize; /*max utile*/
size_t elemSize; /*byte size of each element*/
void *data; /*dynamic Array*/

}CEV_Dyn_Array;

normalement on aurait du faire typedef struct{
des trucs ici
}CEV_Dyn_Array;
et on aurait étés obliger de déclarer une instance de cette struct dans le main non ?

guyver2
guyver2
Niveau 10
17 août 2015 à 18:55:35

actSize est un unsigned int, la ligne au dessus se termine par une virgule et pas un point-virgule.

pour OP :
ici il fait deux chose, il declare une structure et fait un typedef en meme temps. Il ne declare pas d'instance.
Cette structure pourra ensuite etre utilisee comme un type via :
struct _CEV_Dyn_Array foo;
ou directement :
CEV_Dyn_Array foo;

https://en.wikipedia.org/wiki/Struct_(C_programming_language)

Pseudo supprimé
Pseudo supprimé 17 août 2015 à 19:18:12

Le 17 août 2015 à 18:55:35 guyver2 a écrit :
actSize est un unsigned int, la ligne au dessus se termine par une virgule et pas un point-virgule.

pour OP :
ici il fait deux chose, il declare une structure et fait un typedef en meme temps. Il ne declare pas d'instance.
Cette structure pourra ensuite etre utilisee comme un type via :
struct _CEV_Dyn_Array foo;
ou directement :
CEV_Dyn_Array foo;

https://en.wikipedia.org/wiki/Struct_(C_programming_language)

Mais pour faire un typedef directement dans une déclaration de structure on devrait écrire ceci :
typedef struct{
son code ici
}CEV_Dyn_Array;
J'ai pas compris le typedef un peu ésothérique pour moi :(

guyver2
guyver2
Niveau 10
17 août 2015 à 21:37:42

Non, justement typedef s'accomode tres bien de ce genre de syntaxe. Ici le code declare une structure nomee et en fait un typedef directement.
Regarde la page wikipedia que je te file au dessus. Elle explique bien les deux syntaxe. Soit tu declare d'abbord une struct et ensuite sur une seconde instruction tu fais un typedef, soit tu peux combiner les deux, avec ou sans nom pour la structure du coup dans ce second cas.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware