无法使用ifdef&#d;宏初始化struct内部的数组

时间:2017-01-21 00:39:04

标签: c struct macros c-preprocessor

我正在尝试初始化下面的结构,称为arduino_lcd_t。因为我使用的外设可以将数据一次写入四位,或者一次写入8位,所以我决定使用一个宏来定义自己。但是,我无法编译此代码,可能是因为#ifdef的宏。我收到了警告

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;

1 个答案:

答案 0 :(得分:1)

long data_pins[DATA_LEN]; 

当宏将被扩展时,它将变为

long data_pins[4;]; 

4;不能成为数组的指标。移除宏末尾的;