2013-08-21 2 views
0

번역 단위의 완전한 유형이 불완전한 유형이 될 수있는 상황이 있습니까? C11 standard (6.2.5 절)의 각주에있는 다음 진술은이 질문을 던졌습니다.C : C11 표준에서 완전하지 않은 유형으로 완성 유형

A type may be incomplete or complete throughout an entire translation unit, or it may change states at different points within a translation unit.

불완전한 유형이 번역 단위에서 완전한 유형이되는 사례가 많습니다. 그러나 반대 시나리오가 가능했는지 궁금합니다. 내 직감은 그렇지 않다고 말해 줄거야.

+0

아닌시기에 #undefine 것입니까? – Jiminion

+1

@Jim #undefine은 전처리 중에 발생합니다. 그 당시 형식의 개념은 존재하지 않습니다. – fuz

+0

그럼 어떻게 될지 모르겠습니다. (그러나 나는 틀릴 수도 있습니다.) – Jiminion

답변

1

복잡한 상황의 예는 다음과

extern double A[]; 

double* f(void) { 
    extern double A[5]; 
    enum { a = sizeof(A), }; //< A has complete type 
    return A; 
} 

enum { b = sizeof(A), }; //< A has incomplete type: error 

double A[5]; 

enum { c = sizeof(A), }; //< A has complete type 
+0

스코프를 잘 적용합니다. – gkb0986