2015-03-07 5 views
0

Je reçois "Erreur [Pe020]: identifiant" mVar "est indéfini" par le compilateur IAR pour le code ci-dessous.compilateur dit la variable extern n'est pas définie

Comment aurais-je utilisé la variable externe? Je ne pouvais pas voir ce que je fais mal.

//commonDefs.h

#include <stdint.h> 
extern uint16_t mVar; 

//file1.c

... 
uint16_t mVar; //global declaration 
... 
static void food(void){ 
    mVar = 10; 
} 

//file2.c

uint16_t compVar; 
... 
static void mFoo(void){ 
    if(compVar > mVar){ 
      ... 
     } 
} 
+4

Avez-vous # inclus commonDefs.h? –

+0

Ce n'était pas un commentaire, mais une réponse :) S'il vous plaît re-postez comme une réponse Désolé de poser une telle question Noob. – Angs

+0

tout le monde était un noob une fois, quand certaines personnes étaient noobs ils ont eu à brûler des heures beaucoup essayer de comprendre noob trucs ... maintenant c'est si simple ... Je souhaite que ce site existe un il y a longtemps –

Répondre

-1

déclarer MVAR comme uint16_t dans l'en-tête et en utilisant extern lorsque vous renvoyez à une variable déclarée dans un autre fichier source, utilisez extern uniquement dans vos fichiers source. Lorsque vous mettez extern devant une variable, l'éditeur de liens cherchera une définition ailleurs

+0

comment est-ce pas correct? – BsD