2017-01-21 39 views
0

我想初始化一個下面的結構體,名爲arduino_lcd_t。因爲我使用的外設可以一次寫入四位數據,或一次寫入八位數據,所以我決定使用一個宏來相應地定義它自己。但是,我無法編譯此代碼,可能是因爲#ifdef的宏。我得到了警告無法用ifdef'd宏初始化數組結構中的數組

declaration does not declare anything 

難道只有一些我沒做對的事情,或者不能這樣做嗎?相關代碼如下。

#define FOUR_BIT_MODE 1 

#ifdef FOUR_BIT_MODE 
#define DATA_LEN 4; 
#else 
#define DATA_LEN 8 
#endif 

typedef struct 
{ 
    long lighting_pin; 
    long register_select_pin; 
    long read_write_pin; 
    long enable_pin; 
    **long data_pins[DATA_LEN];** 
} arduino_lcd_t; 
+3

'#define DATA_LEN 4;'<< ---你有';'進入數組聲明的中間:data_pins [4;]; – fukanchik

回答

1
long data_pins[DATA_LEN]; 

當宏將擴展它將成爲

long data_pins[4;]; 

4;不能陣列的指數之。刪除宏的末尾的;

+1

謝謝,我一定是把這個分號留下了意外 – Razorfoot