未声明引用变量..已定义为extern

时间:2015-10-06 10:33:57

标签: c embedded extern source-insight

我已经定义了一个名为" ledFlag"的全局变量。在一个源文件中,此源文件还具有用于连接到Interupt引脚的按钮的ISR。按下按钮后,将在ISR中设置ledFlag变量。由于主应用程序位于另一个源文件中,因此我已将ledFlag在应用程序文件中作为extern进行十分转换。但我得到了未定义的变量错误引用。我该如何解决?我正在使用Source Insight来编辑源文件。

源文件1:

UINT32 ledFlag=0;
void ISR()
{
   status = readGpio...
   if (status == High)
   {
     ledFlag = 1;
   }
   else
   {}
}

源文件2:

extern UINT32 ledFlag;
main()
{
  if (ledFlag)
      dothis;
}

//粗略插图。

1 个答案:

答案 0 :(得分:0)

首先检查两个文件是否正确编译在一起,并将两者都添加到项目中。

其次:你的编译器最有可能优化变量调用,对它能够做什么并且可以缩短做出错误的假设。

为了防止这种情况,请执行以下操作:

源文件1

volatile UINT32 ledFlag=0;
void ISR()
{
   status = readGpio...
   if (status == High)
   {
     ledFlag = 1;
   }
   else
   {}
} 

源文件2:

volatile extern UINT32 ledFlag;
main()
{
  if (ledFlag)
      dothis;
}