编译器说没有定义extern变量

时间:2015-03-07 13:52:44

标签: c extern iar

我得到“错误[Pe020]:IAR编译器为以下代码”未定义“标识符”mVar“。

我应该如何使用extern变量?我看不出我做错了什么。

// 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){
          ...
      }
}

1 个答案:

答案 0 :(得分:-1)

在标题中将mVar声明为uint16_t,并在您对另一个源文件中声明的变量进行reffering时使用extern,即仅在源文件中使用extern。当您将extern放在变量前面时,链接器将在其他地方寻找定义