2012-03-27 10 views
0

다른 'x'와는 달리 여기에 유형 오류의 이름을 지정하지 않습니다.이 유형에는 순환 종속성이 포함되어 있다고 생각하지 않지만 여전히 문제가 있습니다. 그것.다른 "x"는 유형 오류를 지정하지 않습니다

typedef struct  /* structure definitions */ 
{ 
    float mat[4][4]; 
} matrix_unit; 

matrix_unit I = { 
{ 1., 0., 0., 0., 
    0., 1., 0., 0., 
    0., 0., 1., 0., 
    0., 0., 0., 1 }, 
}; 

matrix_unit *stack[50]; /* (line 456) array of pointers to act as a stack */ 
matrix_unit stackbase = I; 
stack[0] = &stackbase; // 'stack' does not name a type 

스택은 이미 matrix_unit 구조체에 대한 포인터의 스택으로 선언되었으므로 유효하지 않아야합니까? 나는 "GCC -c 3D.c"로 코드를 컴파일 할 때

, 나는이 라인에서 다음과 같은 오류를 얻을 :

3D.c:457:1: error: initializer element is not constant 
3D.c:458:1: warning: data definition has no type or storage class 
3D.c:458:1: error: conflicting types for ‘stack’ 
3D.c:456:14: note: previous declaration of ‘stack’ was here 
3D.c:458:1: error: invalid initializer 

감사합니다 도움을 사전에.

+0

gcc 4.6.2 – grifos

+0

음으로 컴파일하기. 음. 나는 C++ 파일을 포함하고 있습니다. 그게 효과가 있니? g ++로 컴파일 중입니다. – Richard

+0

g ++ 4.6.2에서도 컴파일이 가능합니다. 따라서이 부분 집합에 대한 컴파일러 문제는 아닙니다. 그러나 나는 당신이 당신의 포스트에서 쓴 것을 테스트 할 수만 있습니다. – grifos

답변

2

컴파일러가 458 행을 구문 분석하려고합니다. 그렇지 않습니다. 진술입니다. 명령문은 함수 안에 작성해야합니다. 이와 같이 :

void initialize() 
{ 
    stack[0] = &stackbase; 
} 
+0

그게 효과가! 모두 도움을 주셔서 감사합니다. – Richard

관련 문제