c - 未声明的变量引用..已在外部定义

标签 c embedded extern source-insight

我在一个源文件中定义了一个名为“ledFlag”的全局变量,这个源文件还有一个用于按钮连接到中断引脚的 ISR。一旦按下按钮,ledFlag 变量将在 ISR 中设置。由于主应用程序位于另一个源文件中,因此我在应用程序文件中将 ledFlag 标记为 extern。但是我得到了对变量错误的 undefined reference 。我该如何解决?我正在使用 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

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

源文件 2:

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

关于c - 未声明的变量引用..已在外部定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32967777/

相关文章:

c - 反转链表

c - 我应该使堆栈段变大还是堆段变大?

algorithm - Intel hex 文件中任意大小的填充模式

c - 如何访问另一个结构体中的结构体字段指针并正确写入?

c++ - (C++) 如何将 STL 列表声明为外部列表?

c++ - 如何在另一个命名空间中使用常量定义的外部?

C#:在 shlwapi.dll 中实现或替代 StrCmpLogicalW

python - 如何、何时以及在 python 中向量化什么?

c - 在 C 中的 while 循环条件中使用赋值运算符

C do-while 循环