2013-07-03 61 views
0

我工作的兩個不同的LCD初始化。一個來自教授的硬件,另一個來自我的硬件。我想用宏定義兩種功能之間切換:變化與宏

#ifndef LCD_Professor 

void InitLCD (uint8_t N, uint8_t F, uint8_t D, uint8_t C, uint8_t B, uint8_t ID, uint8_t SH) { 
... 
} 

#endif 

#ifndef LCD_Group3 

void InitLCD (uint8_t N, uint8_t F, uint8_t D, uint8_t C, uint8_t B, uint8_t ID, uint8_t SH) { 
... 
} 

#endif 

我希望,如果我在文件的開頭使用的#define LCD_Group3,我可能這兩種功能之間進行選擇。事實是,我從來沒有真正使用過這些宏。這應該工作嗎?或者說,有沒有其他方法可以做到這一點?

謝謝!

回答

1

應該

#ifdef LCD_Professor 
... 
#endif 

#ifdef LCD_Group3 
... 
#endif 

#ifndef選擇它們中的哪一個,你要使用,那麼你可以做#define LCD_Group3LCD_Professor你包括文件之前,使一方或另一方。

+0

謝謝你,你是對的。我多麼愚蠢! – notsag2d

0

您必須使用宏?另一種方法是將這兩個函數放在單獨的文件中,只構建一個你想要的文件。甚至可以將兩者都構建到不同的可執行文件中,並在運行時選擇您想要的文件。

如果你不熟悉的建築這樣的事情,你需要一個Makefile文件(名稱的Makefile文件)。例如,從一個普通文件app.c建立兩個應用程序「教授」和「釘」和你的兩個實現在prof.c和stud.c: -

all: stud prof 
CFLAGS = -g -Wall 
CC = gcc 

prof: prof.o app.o 
     $(CC) $^ -o [email protected] 

stud: stud.o app.o 
     $(CC) $^ -o [email protected] 

注意,有一個選項卡每個前$(CC),而不是空格

+0

我很熟悉,但自從我使用的是軟件下載代碼到微控制器我仍然在學習如何使用它! (LPCXpresso) – notsag2d