1

我有一个问题,我需要将变量从一个文件外部化到另一个文件,并且我需要包含一个库。问题是当我包含库时,编译器会给出一个错误,指出变量未定义。外部文件:

#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..
}

提前致谢。

4

1 回答 1

0

您不能使函数的局部变量(例如flagin main())在函数外部的任何地方直接可见,更不用说通过extern.

您需要将这些局部变量移到外部main(),使它们成为普通的全局变量。它们可以通过extern您的“外部”文件访问。

此外,由于代码建议您在其中处理中断,因此请创建在 ISR 中访问的那些全局变量volatile。如果您不这样做,对它们的更改可能在 ISR 中或外部是不可见的。

于 2013-03-31T08:19:54.377 回答