c - декларация после зачета, gcc 4.5 против визуального c 2005 - PullRequest
1 голос
/ 15 июня 2011

Следующий код компилируется в gcc 4.5, но не компилируется в Visual C 2005.

int main()
{
    int len;
    len = 32;
    char buff[len];

    return 0;
}

Я знаю, что я объявляю массив после оценки, что противоречит правилам ANSI C.

Но почему GCC не выдает никаких ошибок или предупреждений, а в visual c выдает ошибку типа

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

есть идеи?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

Ваш код C не совместим с C90.gcc -pedantic предупредит об этом.

~/tmp$ gcc -pedantic a.c
a.c: In function ‘main’:
a.c:5: warning: ISO C90 forbids variable length array ‘buff’
a.c:5: warning: ISO C90 forbids mixed declarations and code
~/tmp$ 
0 голосов
/ 15 июня 2011

Компилятор Visual Studio 2005 не может обрабатывать динамическое выделение массива.Попробуйте char buff[32], это будет работать.Это ограничение VS 2005.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...