2013-04-24 3 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 

Я использую Code :: Blocks, если оно соответствует вообще. Я не объявлял эту переменную `THE_FILE_YOU_READ где-нибудь еще в программе. Любые идеи, или это просто глупый контроль с моей стороны?

ответ

7

Вы написали этот код вне любой функции в области содержимого. Это неверно. Заявления могут выполняться только в функциях. Вне функции компилятор пытается интерпретировать вторую строку как объявление/определение с неявным типом int.

+0

@R Вы абсолютно правы. Я не видел, чтобы OP сообщал, что он уверен, что он не заявил об этом где-либо раньше. Но вопрос был настолько неуклюжим, что я пропустил его. Спасибо за понимание. Я удаляю свой ответ, поскольку мое предположение было неправильным. –

+0

ОП не сказал этого; Я вывел его из того факта, что компилятор интерпретировал строку 11 таким образом, чего не было бы на уровне функции. –

+0

Что означает строка 11? Элемент инициализатора не постоянный. Что это значит? –

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