Voir la version complète : Passage de structure en parametre d'une fonction
Slt!
J'aimerais passer une structure en parametre d'une fonction, en C normalement, ça se fait bien, en ecrivant
void mafonction (struct MonTypeStructure MaStructure)
{blablabla}
mais ça marche pas... il me prend pas ma structure mais ne retourne pas d'erreur.
comme si je lui passais rien.
Je sais que certaines version du C ne permettent pas le passage de structure en parametre mais seulement le passage de pointeur vers une structure en parametre.
Est-ce le cas ici ?
Voilà, si vous avez dejà fait un truc dans le style, pourriez vous m'aider, svp.
Oui, moi je fais ca comme ca :
void ma_fonction(ma_structure str);
et l'appel :
ma_structure str;
ma_fonction(str);
Et ca marche ...
Je pense que ouais, faut mettre le pointeur vers la structure, j'ai toujours fait comme ça, et ça marche :)
void maFonction(MaStruct* Structure) {
if(blabla) {
ok;
}
}
vous mettez pas linstruction "struct" avant votre type de structure et votre structure dans les param?
Ma structure est définie dans un .h inclu dans main.c et la fonciton qui doit utiliser cette structure est dans main.c
j'arrive à acceder aux champs de la structure puisque etant inclu dans main.c, elle passe globale mais pas à la faire passer en param, ptet que j'ai loupé un truc à ce niveau ?
vous mettez pas linstruction "struct" avant votre type de structure et votre structure dans les param?
Ma structure est définie dans un .h inclu dans main.c et la fonciton qui doit utiliser cette structure est dans main.c
j'arrive à acceder aux champs de la structure puisque etant inclu dans main.c, elle passe globale mais pas à la faire passer en param, ptet que j'ai loupé un truc à ce niveau ?
Si on ne mets pas struct c'est parce qu'on utilise systèmatiquement une déclaration du style :
typedef struct
{
int sert_a_rien;
} ma_structure_t;
j'ai viré le "struct", ça compile sans erreur, mais il se passe rien comme si la structure passée etait vide.
EDIT:
Ok, je declare aussi mes structures avec un typedef devans, enfin, ça depdn des fois, mais là oui donc evidemment, il est défini, et pas besoin de "struct", c'etait logique, merci.
Sinon, j'ai trouvé, en fait je passais bien ma structure (en dehors du struct mais comme j'avais essayé peins de truc possible...) mais l'erreur etait ailleur, donc ça marche. Merci tout le monde.
Finallement, j'ai tous passé par adresse comme ça, plus de probleme parce que en passant par valeur, j'avais acces en lecture à la structure mais pas en ecriture direct et ça genait à un endroit, pis vu qu'elle est un peu grosse, ça ira plus vite.
Finallement, j'ai tous passé par adresse comme ça, plus de probleme parce que en passant par valeur, j'avais acces en lecture à la structure mais pas en ecriture direct et ça genait à un endroit, pis vu qu'elle est un peu grosse, ça ira plus vite.
Bah si ta structure est locale et pas globale c'est sur. Par contre si tu l'utilise souvent c'est tout aussi simple de la placer en globale...
Elle est en globale, mais ça empeche pas de la passer dans les fonctions pour avoir un truc propre. parce que je pourrais acceder aussi aux champs direct puisqu'elle est globale mais c'est moche.
vBulletin® v.3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org