2014-09-06 2 views
2

Я использую код от Jack Ganssles debouce tutorial и пытаюсь заставить его работать на MSP430 с использованием Texas Instruments Code Composer Studio v5.5 (на основе Eclipse). У меня возникли проблемы с целочисленным массивом, что я с помощью определить значение, называемое MAXCHECKS вИспользование массива с #define значением в C

#define MAXCHECKS 8; 
int Debounced_state;   // Debounced state of the switches 
int state[MAXCHECKS];   // Array that maintains bounce status 
int Index = 0;     // Pointer into state 

Эта линия ИНТ состояние [MAXCHECKS]. порождает 2 ошибки # 17, ожидаемые "]" и # 171 ожидали объявления. Если я изменил MAXCHECKS на значение, скажем, 8 или 10, код строит и загружает штраф, хотя он не отлаживает коммутаторы, но это то, над чем я могу работать, пока еще не установлен таймер.

код, что определение и переменные работы с следующим

int i,j; 
state[Index] = (P1IN & 0x0088); 
++Index; 
j = 0xFF; 

for(i=0; i<MAXCHECKS; i++) 
{ 
    j &= state[i];   
} 

Debounced_state = j;    
if (Index>=MAXCHECKS) 
{ 
    Index = 0; 
} 

Я полагаю, что это должно быть что-то мне не хватает, но в данный момент не уверен, следовательно, вопрос?

+1

Возможный дубликат [Что не так с этим кодом C 1988 года?] (Http://stackoverflow.com/questions/8640818/whats-wrong-with-this-1988-c-code) – usr2564301

ответ

6

Удалите точку с запятой в конце макроопределения

#define MAXCHECKS 8; 

Предварительно процессор расширяет линию в вопросе

int state[8;]; 

, который вызывает ошибку компиляции.

+0

Cheers Martin Я чувствую себя как идиот теперь с такой простой ошибкой! – Ant

Смежные вопросы