2017-01-21 11 views
0

arduino_lcd_t으로 알려진 구조체를 초기화하려고합니다. 내가 사용하고있는 주변 장치는 한 번에 4 비트 씩 또는 한 번에 8 비트 씩 데이터를 쓸 수 있기 때문에 이에 맞게 정의하는 매크로를 사용하기로 결정했습니다. 그러나, 나는 #ifdef의 매크로 때문에 아마이 코드를 컴파일 할 수 없다. 나는 경고를 얻는다ifdef 매크로로 구조체 내부의 배열을 초기화 할 수 없습니다.

declaration does not declare anything 

내가 올바르게하지 않고있는 무엇인가 또는 할 수 없냐? 관련 코드는 다음과 같습니다. 매크로는

long data_pins[4;]; 

4;

배열의 indice 수 없다해질 것이다 연장한다

#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]; 

. 매크로 끝 부분에있는 ;을 제거하십시오.

+1

고마워요. 우연히 세미콜론을 떠났을 것입니다. – Razorfoot