Probleme de variable globale.

Probleme de variable globale. - C - Programmation

Marsh Posté le 12-12-2004 à 16:48:31    

J'ai un probleme avec une variable globale que je n'arrive pas a faire "atteindre" dans les autres fonction:
 

Code :
  1. main()
  2. /*-----*/
  3. {
  4.   Shape rect = ShapeCreate(RECTANGLE);
  5.  
  6.   init_graphics(400, 400);
  7. }


 
Si par exemple je veux changer ces attributs :
 

Code :
  1. /*------------------------------------------*/
  2. bouton_enfonce(int num_bouton, int x, int y)
  3. /*------------------------------------------*/
  4. /* Appele lorsqu'un des boutons de la souris a ete enfonce */
  5. {
  6.   printf("Bouton %d enfonce, pos (%d %d)\n", num_bouton, x, y);
  7.    
  8.   ShapeSetAttribute(rect, shape_x, x);
  9.   ShapeSetAttribute(rect, shape_y, y);
  10.  
  11.   ShapeDraw(rect);
  12.   ShapeDestroy(&rect);
  13.  
  14.   redraw_all(); /* je suis pas sur pour ce machin */
  15. }


 
Et là c'est le drame, gcc me dit qu'il ne reconnait pas rect dans bouton_enfonce, donc comment faire pour qu'il attrape le "rect" defini dans le main ?

Reply

Marsh Posté le 12-12-2004 à 16:48:31   

Reply

Marsh Posté le 12-12-2004 à 16:53:06    

Rect n'est pas une variable globale puisqu'elle est déclarée dans la fonction main [:mlc]
Mets la au dessus du main().

Reply

Marsh Posté le 12-12-2004 à 16:59:47    

Ok, gcc me dit qu'il faut que ce soit une constante.
"initializer element is not constant"
 
Et autre chose mon prof me dit :
 
"Modifiez main.c pour que le rectangle soient en variable globale, créé une seule fois dans le main (avant  
init_graphics)."


Message édité par Chronoklazm le 12-12-2004 à 17:00:21
Reply

Marsh Posté le 12-12-2004 à 17:03:11    

Bon en fait je crois que c'est resolu :
 
Shape rect;
 
main(){
rect = ShapeCreate(RECTANGLE);
...
}
 
Il a l'air de kiffer comme ca...

Reply

Marsh Posté le 12-12-2004 à 17:07:03    

Autre chose ca veut dire quoi si j'ai un message du style :
 
"Segmentation fault (core dumped)"
 
Enfin c'est quel type de probleme generalement ?

Reply

Marsh Posté le 12-12-2004 à 17:24:26    

C'est que tu écrit où tu ne devrais pas. En dehors d'un espace aloué, dans un espace déja libéré...

Reply

Marsh Posté le 12-12-2004 à 17:50:48    

Ok ça marche.
 
Bon là je sais que c'est honteux mais quand j'ecris
 

Code :
  1. bool bouton_enf;
  2. main(){
  3. bouton_enf = false;
  4. ...
  5. }


 
Il me dis qu'il ne recnnait pas "false". Je comprends plus rien là :(


Message édité par Chronoklazm le 12-12-2004 à 17:53:43
Reply

Marsh Posté le 12-12-2004 à 18:10:50    

#include <stdbool.h>

Reply

Marsh Posté le 12-12-2004 à 18:13:49    

Merci Taz.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed