我正在为嵌入式设备开发GLCD库。这个想法是将它分成高级和低级部分。这允许“用户”只为其显示控制器编写低级函数,并使用高级函数,如线条,cricle,字符串绘图等,而无需重写这些函数。
为了方便起见,我决定库的用户必须执行以下操作,例如在他的main.c中使用带有SSD1289控制器的显示器:
#define LCD_USE_SSD1289
示例文件ssd1289_lld.h:
#ifdef LCD_USE_SSD1289
lld_lcdInit(void);
#endif
示例文件ssd1289_lld.c:
lld_lcdInit(void) {
// do some stuff for this controller
}
示例文件s6d1121_lld.h:
#ifdef LCD_USE_S6D1121
lld_lcdInit(void);
#endif
示例文件s6d1121_lld.c:
lld_lcdInit(void) {
// do some stuff for this controller
}
在高级文件中,我只会这样做:
#include "drivers/ssd1289_lld.h"
#include "drivers/s6d1121_lld.h"
void lcdInit(void) {
lld_lcdInit();
}
但这确实不起作用:
我做错了什么?
答案 0 :(得分:1)
确保预处理器将#ifdef LCD_USE_SSD1289
放在#define LCD_USE_SSD1289
区域之后。您说#define LCD_USE_SSD1289
位于main.c
文件中。您应该在ssd1289_lld.h的顶部使用单独的definitions.h文件#include
d。希望有所帮助。