【发布时间】:2021-08-31 07:16:46
【问题描述】:
这是一个嵌入式应用程序的问题,但我认为该解决方案是基于语言 (C) 的,而不是特定于我正在使用的嵌入式编译器 (XC16)。
问题
我从单个项目中提取了许多代码文件,以创建可在多个项目中重复使用的共享文件集合。这些文件将需要主应用程序中的 config.h 文件来#define 该项目的一些参数。
示例
项目中的文件
config.h
#define BUFF_SIZE 4
main.c
#include "config.h"
#include <lib.h>
/*Application Code*/
“库”中的文件(即不在项目结构中的另一个文件夹)
lib.h
extern uint8_t Buffer [BUFF_SIZE];
lib.c
#include "lib.h"
uint8_t Buffer [BUFF_SIZE];
问题
这会产生“BUFF_SIZE 在 lib.h 中未声明”的问题。我的理解是编译器会从 main.c 开始加载来自 config.h 的 `#define' 值,然后尝试处理 lib.h 标题。但好像不是这样的。
我是否必须将库反向引用到 config.h 文件?这似乎可行,但它会强制应用程序具有特定的文件名。
有什么好的例子可以说明这种结构应该如何进行吗?
附加说明
当我尝试为 bit-bang 功能映射引脚输出时,也会出现同样的问题。即
config.h
#define DATA_OUT LATBbits.LATB4
lib.c
void SetPin(void)
{
DATA_OUT = 1;
}
干杯:)
【问题讨论】: