2015-03-07 5 views
0

Я получаю «Ошибка [Pe020]: идентификатор« mVar »не определен» компилятором IAR для приведенного ниже кода.компилятор говорит, что внешняя переменная не определена

Как следует использовать внешнюю переменную? Я не мог понять, что я делаю неправильно.

//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

Вы # включили commonDefs.h? –

+0

Это был не комментарий, а ответ :) Пожалуйста, перепишите его как ответ Извините, что задал такой вопрос. – Angs

+0

все были noob один раз, <Назад в мой день ...>, когда некоторые люди были noobs, им приходилось сжигать часы, пытаясь найти что-нибудь из noob ... теперь это так просто ... Я хочу, чтобы этот сайт существовал давно –

ответ

-1

Объявляет MVar, как uint16_t в заголовке и использовать EXTERN когда вы указываете на переменную, объявленную в другом исходном файле, которая использует extern только в ваших исходных файлах. Когда вы ставите extern перед переменной, линкер будет искать определение в другом месте

+0

как это не правильно? – BsD

Смежные вопросы