1
我正在研究嵌入式設備的GLCD庫。這個想法是將它分成高級和低級部分。這允許「用戶」只爲他的顯示控制器編寫低級函數,並且使用高級函數,如行,cricle,字符串繪製等,而不用重寫這些函數。使用#ifdef自定義驅動程序
爲了讓事情變得簡單,我決定,圖書館的用戶只是必須做到以下幾點,例如使用與SSD1289控制器的顯示,在他的main.c:
#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
}
實施例文件■ 6d1121_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();
}
但這有點不工作:
- 當我沒有做任何#define LCD_USE_SSD1289它做es工作沒有任何問題
- 爲不同類型的控制器添加第二個驅動程序後,它仍然工作,沒有定義任何類型,它也適用於我定義錯誤的控制器類型。
我在做什麼錯?
確實有幫助。非常感謝你! –