RPG Maker Détente
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
RechercherDernières imagesPortailAccueilAccueilForumPraline au mielS'enregistrerConnexion


 

 [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ?

Aller en bas 
2 participants
AuteurMessage
Le Ziiigg

Le Ziiigg


Messages : 1417


[RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Empty
MessageSujet: [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ?   [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Icon_minitimeMar 22 Mai - 19:36

Voilà, je m'adresse surtout aux pros du dév. en C (Myope), mais je me suis récemment heurté à un problème, la portée des structures. Je m'expliques :

J'ai l'habitude (enfin depuis 1 semaine quoi) de déclarer mes structures dans un header à part. Je fais donc un #include dans le main, le problème étant que si je veux par exemple envoyer un élément de type de ma structure à une fonction, je dois la mettre dans le prototype.
Problème, le prototype de la fonction ne reconnaît pas la structure, je fais donc un autre #include avant lui, mais là problème à nouveau, le compilateur me signale que je suis en train de déclarer une structure déjà déclarée (c'est logique puisque je réintègre ma déclaration). science

Comment faire pour déclarer une structure une fois pour toute accessible dans tout le programme et même dans les headers ? Existe-t-il une sorte de "prototype de structure" ? J'ai cherché sur le net, relu le cours de M@teo, mais rien qui me permettait de résoudre ce problème. pokeface

Merci. Sourit


Dernière édition par Manderr le Mar 22 Mai - 23:47, édité 1 fois
Revenir en haut Aller en bas
Kaila
  
  
Kaila


Messages : 4254


[RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Empty
MessageSujet: Re: [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ?   [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Icon_minitimeMar 22 Mai - 20:03

Alors... Ça doit bien faire 5 ans que je n'ai pas fait de C, donc je risque de me tromper...
Importe ta structure à la fois dans le .h et dans .c avec #include, mais rajoute #pragma once tout en haut de ta structure.
Revenir en haut Aller en bas
Le Ziiigg

Le Ziiigg


Messages : 1417


[RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Empty
MessageSujet: Re: [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ?   [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Icon_minitimeMar 22 Mai - 20:13

Ça m'a l'air de marcher, cela dit je ne comprends pas pourquoi.
Si l'instruction demande au préprocesseur d'ignorer la déclaration la deuxième fois ça ne me dit pas pourquoi le compilo la reconnaît la deuxième fois où elle est utilisée.
La seule explication serait qu'une fois la structure déclarée, elle serait reconnue par tout le programme, le tout étant de la déclarer exactement au début du programme (càd dans le premier header lu par le compilo). Si cas est, ça serait semblable à utiliser #ifndef DEF_TRUC: #define DEF_TRUC: #endif, non ? En tout cas les deux méthodes marchent, merci Clin d\'oeil

(Je ne mets pas le topic en validé pour l'instant parce que je voudrais être sûr de ce que je mets dans mon code tout de même x) )
Revenir en haut Aller en bas
Kaila
  
  
Kaila


Messages : 4254


[RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Empty
MessageSujet: Re: [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ?   [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Icon_minitimeMar 22 Mai - 20:40

Citation :
Ça m'a l'air de marcher, cela dit je ne comprends pas pourquoi.
La raison est simple: c'est moi qui te l'ai dit science

Non, en fait, pendant l'édition, tu as accès à la structure dans les deux fichiers grâce au #include dans les deux fichiers. Seulement, lors de la réunion des deux fichiers pendant la compilation, #pragma once indique au compilateur de ne tenir compte de l'import de ta structure qu'une seule fois. Tout se joue lors de la compilation Tire la langue
Revenir en haut Aller en bas
Le Ziiigg

Le Ziiigg


Messages : 1417


[RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Empty
MessageSujet: Re: [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ?   [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Icon_minitimeMar 22 Mai - 21:36

J'avais compris ça, oui, d'où la possibilité de le remplacer par le #ifndef et tralala, ce que je voulais savoir mais j'en suis presque sûr c'est si la déclaration d'une structure la rendait accessible depuis tout le programme (sa définition, les objets de son type gardant la même portée que les variables classiques).

EDIT : Bon finalement j'ai l'impression que c'était bien une histoire comme ça, mon problème étant réglé, vous pouvez locker le topic. Clin d\'oeil
Revenir en haut Aller en bas
Contenu sponsorisé





[RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Empty
MessageSujet: Re: [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ?   [RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ? Icon_minitime

Revenir en haut Aller en bas
 
[RESOLU][QUESTION : C]Comment rendre une structure accessible dans tout le programme ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» comment on fait pour rendre les pv et pp comme dans un centre pokemon?
» Comment rendre son jeu independant ?
» comment changer les icônes [résolu]
» Faire un "zoom arrière" dans RMXP[résolu]
» Ajout d'une commande dans le script de quête [RESOLU]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker Détente :: La Guinguette participative :: Entraide-
Sauter vers: