URL: https://linuxfr.org/forums/programmation-c--2/posts/le-myst%C3%A8re-du-pointeur-global Title: Le mystère du pointeur global Authors: JaguarWan Date: 2004年12月30日T21:14:09+01:00 Tags: Score: 0 Bonjour à tous :) J'ai encore un problème étrange pour lequel je n'arrive pas à trouver de documentation... J'utilise dans mon programme une structure server_t avec plein de choses dedans. J'ai fait une collection de fonctions ServerFaitQuelqueChose pour modifier cette structure. Pour plus de confort, et étant donné qu'il ne peut n'y avoir qu'une structure server_t fonctionnelle à la fois, j'ai déclaré un pointeur global appelé this qui pointe dessus. Auparavant, quand tout allait bien, tout ceci se trouvait dans un même fichier server.c, qui était devenu assez volumineux. J'ai donc nettoyé mon code et éparpillé mes fonctions ServerBidule dans divers fichiers suivant ce qu'elles faisaient, et j'ai donc modifié la déclaration de this en conséquence : avant, j'utilisais static server_t *this = NULL dans mon server.c, maintenant j'ai extern server_t *this; dans mon server.h et server_t *this = NULL; dans mon server.c. Tous les fichiers contenant des fonctions ServerMachin #includent "server.h". Mais là où les choses se corsent, c'est que mon programme ne marche plus correctement depuis. Il compile, il tourne, mais ce que font les fonctions externes ServerTruc n'est plus répercuté sur la structure. Par exemple, l'une d'entre elle est sensée me charger un plugin et créer des sockets, tous stockés dans des tableaux dynamiques au sein de la structure server_t. A la fin de la fonction, qui tourne sans anicroche, je fait un printf sur this->iSocketCount, ça affiche 1 : cohérent. Dans mon thread serveur (codé dans le fichier où est déclaré this), je fais un printf sur la même variable et il m'affiche triomphalement 0... Là, je ne saisis pas... O_o' Je vous serais vraiment reconnaissant si vous pouviez me dire ce qui ne vas pas :)

AltStyle によって変換されたページ (->オリジナル) /