我想使用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值。
我正在开发一个图书馆,打算在我的所有项目中重复使用它。
答案 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
关键字告诉编译器您指的是另一个链接器符号中已存在的全局变量。