如何使用MPLAB X IDE在库项目中创建全局变量

时间:2012-05-10 19:16:13

标签: c mplab

我想使用MPLAB X IDE(用于PIC开发的ide)在C中创建一个库。

我的库ABCLib有一个简单的源文件:

文件abc.c

void abcTest(int n){ 
    // I want store n as global variable
} 

要在MyProject中使用此库,我必须在MyProject头文件夹中创建abc.h:

文件abc.h

#ifndef _ABC_H
#define _ABC_H 

void abcTest(int n);

#endif;

文件MyProject.c(主文件)

#include "abc.h"

void main(void) {
    abcTest(10);
}

现在,我想将n存储为全局变量,因此,在调用abcTest()之后,我可以检索到我想要的n值。

我正在开发一个图书馆,打算在我的所有项目中重复使用它。

2 个答案:

答案 0 :(得分:1)

您需要在要使用其全局值的所有文件中将变量声明为外部。

示例:

文件abc.c

extern int global_a;
void abcTest(int n){ 
    global_a+=n;
} 

文件abc.h

#ifndef _ABC_H
#define _ABC_H 

void abcTest(int n);

#endif;

文件MyProject.c(主文件)

#include "abc.h"
int global_a = 0; // always initialize global variables

void main(void) {
    abcTest(10);
}

此致

答案 1 :(得分:0)

编译MyProject.c后,abc.h文件将包含在翻译单元中,因此全局静态变量应该在该翻译单元中保持可见。为了从外部对象访问它,你必须在翻译单元中有一个功能,可以将值传递给外部。

否则只需在文件中的任何位置命名它,而不是范围,它将是全局的。为了跨多个文件进行全局进位,请使用extern关键字告诉编译器您指的是另一个链接器符号中已存在的全局变量。