我在一个源文件中定义了一个名为“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/