我在一个源文件中定义了一个名为“ledFlag”的全局变量,这个源文件还有一个用于按钮连接中断pin的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
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/