2013-04-24 4 views
1

다음 코드로 인해 발생하는 오류를 이해할 수 없습니다. fopen()을 사용하여 파일을 열려고하는데 오류가 이해가 안됩니다. 설명해주세요. 모든 일. 다음과 같이fopen() 및 FILE로 인해 설명 할 수없는 오류가 발생했습니다

10 - FILE * THE_FILE_YOU_READ; 
11 - THE_FILE_YOU_READ = fopen("num.txt","r"); 

이 두 라인은 혼자 몇 가지 경고 및 오류를 생성합니다 전혀 관련이 있다면 코드 : 블록을 사용하고

11 - warning: data definition has no type or storage class [enabled by default] 
11 - error: conflicting types for 'THE_FILE_YOU_READ' 
10 - note: previous declaration of 'THE_FILE_YOU_READ' was here 
11 - warning: initialization makes integer from pointer without a cast [enabled by default] 
11 - error: initializer element is not constant 

. 나는이 변수를 프로그램의 어느 곳에서도 THE_FILE_YOU_READ 선언하지 않았다. 어떤 생각이든, 아니면 단순히이 부분에 대한 어리석은 감시입니까?

답변

7

이 코드는 파일 범위 밖의 모든 함수 외부에 작성했습니다. 그건 잘못되었습니다. 명령문은 함수에서만 발생할 수 있습니다. 함수 밖에서 컴파일러는 두 번째 행을 암시 적 유형 int 인 선언/정의로 해석하려고합니다.

+0

@R 당신은 절대적으로 옳았습니다. 나는 그가 어디에서나 선언하지 않았 음을 말하는 OP를 보지 못했습니다. 그러나 그 질문은 너무 서투른 답니다. 통찰력에 감사드립니다. 나는 내 자신을 삭제하고 있습니다. 내 전제가 틀렸기 때문에 대답 해주세요. –

+0

OP는 그것을 말하지 않았다; 필자는 컴파일러가 함수 수준에서 발생하지 않는 11 행을 그렇게 해석했다는 사실에서 추론했습니다. –

+0

11 행은 무엇을 의미합니까? '초기화 요소가 일정하지 않습니다.'그것이 의미하는 것은 무엇입니까? –