我有一个问题,我需要将一个文件中的变量外部化到另一个文件中,并且我需要包含一个库。问题是,当我包含库时,编译器会给出一个错误,指出变量未定义。
外部文件:
#include <stdio.h>
#include "PHY.h"
void InterruptHandler();
extern int flag;
extern long toSend;
extern int recieved;
void InterruptHandler()
{
//here i use the flag
}
主要内容:
#include <stdio.h>
#include "PHY.h"
void main()
{
int flag; // DETERMINATES CLOCK STATUS
int recieved;
long toSend; // THE DATA WE WANT TO SEND (for instance 0x12345678)
toSend = 0x12345678; // EXAMPLE
// .... here the code continues..
}
最佳答案
您不能使函数的局部变量(例如,main()
中的flag
)在函数外部的任何地方直接可见,更不用说通过外部
。
您需要将这些局部变量移动到 main()
之外,使它们成为普通的全局变量。可以通过“外部”文件中的 extern
访问它们。
此外,由于代码表明您正在处理其中的中断,因此使在 ISR 中访问的那些全局变量volatile
。如果不这样做,对它们的更改可能在 ISR 中或 ISR 之外是不可见的。
关于编译器在包含其他库后不接受外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727659/