0

我想使用 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 的值。

我正在开发一个库,打算在我的所有项目中重用它。

4

2 回答 2

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);
}

问候

于 2012-05-11T04:57:44.377 回答
0

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

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

于 2012-05-10T19:42:44.740 回答