2012-02-06 2 views
-1

Coding IDE: Microsoft Visual C++ 6.0цикл по ошибке C

Следующий код:

#include <stdio.h> 
#include <string.h> 
int main() 
{ 
    int i; 
    for(i=0; i<7; i++) 
    { 
     int j; 
     for(j=0; j<5; j++) 
     { 
      if(i==0 || i==6) 
      { 
       // print ***** 
       if(j<4) 
       { 
        printf("*"); 
       } 
       else if(j==4) 
       { 
        printf("*\n"); 
       } 
      } 
      else 
      { 
       if(j==0) 
        printf("*"); 
       else if(j==4) 
       { 
        printf("*\n"); 
       } 
      } 
     } 
    } 

    return 0; 
} 

Выдает сообщение об ошибке:

error C2143: syntax error : missing ';' before 'type' 

error C2065: 'i' : undeclared identifier 

Я просто не знаю причину почему он дает мне такую ​​ошибку msg. Предположим, что это простой цикл - for (int i=0; i<10; i++){}, но он просто не работает и дает мне такую ​​ошибку msg.

+0

В какой строке вы видите ошибку? –

+0

@ user1145976: Как насчет публикации реального кода? –

+0

VSC++ - старый? Это может потребовать объявления в начале функций. – Vyktor

ответ

3

Вероятно, ваш компилятор следует старой версии стандарта C, ISO 9899: 1990, обычно называемой «C90» (или иногда «C89» или «ANSI-C»).

Стандарт C90 не допускает объявления переменных внутри циклов. Все объявления переменных должны быть сделаны в верхней части текущего оператора, непосредственно после {.

Кроме того, в стандарте C90 не допускаются комментарии //, что, вероятно, является источником ошибки вашего компилятора.

Текущий стандарт C ISO 9899: 2011 («C11») допускает объявления переменных везде, а также комментарии //.

+0

Сегодня я создал рабочую область консольного приложения win32 для Microsoft Visual Studio 6.0, скопировал и вставил код, затем он работает ... странно. Сначала я создал hello.c, а затем использовал настройку рабочего пространства по умолчанию, тогда я получил это для ошибки цикла ... до сих пор не знаю, что происходит ... Я проверю версию компилятора по умолчанию ... спасибо ! – shanwu

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