2011-02-25 3 views
0

코드 조각이 다음과 같이 표시되며 주석이있는 행 (// 여기 오류)이 실행되면 배열의 요소 대신 상태 변수가 설정됩니다.구조체의 배열 값을 설정하면 구조체에 다른 필드가 설정됩니다.

구조체 정의에서 int 상태 요소를 array_name 요소 위로 옮겼습니다. 고정되어있는 것처럼 보였습니다. 포인터를 변경하고 일부 괄호가 누락 된 것으로 의심됩니다.하지만 왜 이런 일이 발생했는지 확신 할 수 없습니다.

#define MAX_NUM 20 
typedef struct FOO_T { 
    bool abc; 
    int id; 
    int array_name[MAX_NUM]; 
    int counter; 
    int status; 
    SYSTEMTIME timestamp; 

    struct FOO_T *next; 
} 

if (curr->array_name[code] == 0) 
{ 
    curr->counter++; 
    curr->array_name[code] = curr->counter; //error here 
} 

나는 또한 다른 기능에서 전체 구조체를 초기화, 그 기능의 일부가 이것이다 :

thing->id = 0; 
for (i = 0; i < MAX_NUM; i++) thing->array_name[i] = 0; 
thing->counter = 0; 
thing->status = 0; 
+2

입니까? 그냥 코드를 복사하지 못했습니다 ... – rene

+0

위의 코드에 추가되었지만 이미 내 코드에 있습니다. #define MAX_NUM 20 – emge

+0

@rene - 코드가 == MAX_NUM – OrangeDog

답변

3

당신은 codeMAX_NUM 이하인지 확인해야합니다. 특정 경우 code에서

아마 코드가 MAX_NUM 다음> 아마 MAX_NUM + 1

관련 문제