Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Variable globale et allocation dynamique
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Variable globale et allocation dynamique

Posté le 31/10/2014 08:31

Voilà j'ai un pointeur globale que j'alloue dynamiquement dans le Addin_main

int *data;

int AddIn_main(int isAppli, unsigned short OptionNum){
   data = malloc(10*4);

   fonction1();
   free(data);

   return 1;
}


Le problème est que je peux accéder à data[0] ou data[5] dans les fonctions du même fichier.

Mais lorsque je veux accéder à data[0] ou data[4] dans un autre fichier, je me retrouve avec des "illégal array reference" et un "Undeclared name "data""


Julese50 Hors ligne Gourou Points: 315 Défis: 16 Message

Citer : Posté le 31/10/2014 08:44 | #


Tu l'a déclaré dans un fichier source (*.c) ? Essaye de le déclarer dans un header.
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 31/10/2014 08:48 | #


C'est tout à fait bon de le déclarer dans uns source, au contraire dans un header c'est déconseillé.
Essaie, à la place de data, de mettre *(data+i), et caste le malloc().
Même dans ce cas, utilise calloc() c'est plus pratique.

Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 31/10/2014 08:57 | #


Nan, ça fonctionne pas

J'ai l'impression que data n'est pas accessible aux autres fichiers car j'ai un "Undeclared name "data""
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 31/10/2014 09:00 | #


tu n'aurais pas oublier d'inclure main.c dans tes autres fichiers?
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Julese50 Hors ligne Gourou Points: 315 Défis: 16 Message

Citer : Posté le 31/10/2014 09:10 | #


Bon, alors selon Wikipedia, une variable externe doit être déclaré dans chacune des fonctions qui font appel à elle. Donc dans chaque fonction qui l'utilise, met extern *data;. Et utilise calloc().
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 31/10/2014 09:10 | #


Inclure main.c ? Oh mon dieu >_<

Désolé, j'avais compris que c'était dans le même fichier.
Dans les autres fichiers, il faut ajouter la déclaration :
extern int *data;
en global ou en local.

En général, on met cette déclaration dans le header.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 94 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd