Подтвердить что ты не робот

Ошибка C2143: синтаксическая ошибка: отсутствует ';' перед "типом"

Я новичок в программировании C.. скажите, пожалуйста, что не так с этой программой, и почему я получаю эту ошибку: ошибка C2143: синтаксическая ошибка: отсутствует ';' перед "типом" ....

extern void func();

int main(int argc, char ** argv){
    func();
    int i=1;
    for(;i<=5; i++) {
        register int number = 7;
        printf("number is %d\n", number++);
    }
    getch();
}
4b9b3361

Ответ 1

Я не использовал визуальное изображение не менее 8 лет, но, похоже, поддержка Visual C с компилятором не допускает смешанного кода и переменных. Является ли строка ошибки для объявления для int i=1;? Попробуйте переместить его над вызовом на func();

Кроме того, я бы использовал extern void func(void);

Ответ 2

Visual Studio поддерживает только C89. Это означает, что все ваши переменные должны быть объявлены перед чем-либо еще в верхней части функции.

EDIT: @KeithThompson подтолкнул меня добавить более технически точное описание (и действительно просто исправить, где мое не в одном отношении). Все объявления (переменных или чего-либо еще) должны предшествовать всем операторам внутри блока.

Ответ 3

int i=1;
for(;i<=5; i++) {

должен быть идиоматически записан как:

for(int i=1; i<=5; i++) {

потому что нет смысла объявлять переменную цикла for в области видимости функции.