problème de structure

problème de structure - C - Programmation

Marsh Posté le 08-03-2011 à 17:08:48    

Bonjour!
 
J'ai un problème de structure dans un code en C pour un PIC16F877A
 

Code :
  1. struct Temp{
  2. int counter;
  3. int slope;
  4. signed int temp;
  5. int demi_degree;
  6. };
  7. Temp* read_temp(int address){
  8. Temp t;
  9. i2c_start();
  10. i2c_write(0x90 | (address<<1));
  11. i2c_write(READ_TEMP);
  12. i2c_start();
  13. i2c_write(0x91 | (address<<1));
  14. t.temp=i2c_read();
  15. t.demi_degree=i2c_read(1);
  16. i2c_start();
  17. i2c_write(0x90 | (address<<1));
  18. i2c_write(READ_COUNTER);
  19. i2c_start();
  20. i2c_write(0x91 | (address<<1));
  21. t.counter=i2c_read();
  22. i2c_start();
  23. i2c_write(0x90 | (address<<1));
  24. i2c_write(READ_SLOPE);
  25. i2c_start();
  26. i2c_write(0x91 | (address<<1));
  27. t.slope=i2c_read();
  28. i2c_stop();
  29. return &t;
  30. }


 
Apparemment l'utilisation de ma structure pose problème mais j'ai déjà passé un moment dessus et j'arrive pas à trouver où.
 
Cordialement


Message édité par barbarius88 le 08-03-2011 à 17:09:52
Reply

Marsh Posté le 08-03-2011 à 17:08:48   

Reply

Marsh Posté le 08-03-2011 à 17:17:04    

Tu crées une variable locale dans ta fonction, et tu retournes l'adresse. Or, ta variable est détruite à la fin du bloc, donc juste après le return. Tu récupères donc en sortie une adresse qui ne pointe plus vers une zone valide.

Reply

Sujets relatifs:

Leave a Replay

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