2010-06-06 2 views
0

У меня есть следующий фрагмент кода. Это файл c в visual studio 2010. Если я попытаюсь скомпилировать это с помощью строки: int hello = 10; прокомментировал, что он будет компилироваться просто отлично. Если я прокомментирую эту строку, она не будет компилироваться. Я что-то упустил или не должен использовать Visual Studio 2010 для компиляции кода C. Если это Visual Studio проблема может кто-нибудь рекомендовать простой в использовании IDE/Compiler, что я могу для C.Visual Studio 2010 Компиляция кода C

Спасибо

int* x = (int*) calloc(1, sizeof(int)); 

*x = 5; 

//int hello = 10; 

printf("Hello World! %i", *x); 

getchar(); 
+3

«он не скомпилирует»: обратите внимание на ошибку компилятора? –

+0

Какая ошибка компиляции вы получаете? – 2010-06-06 19:21:19

ответ

17

Вы не можете иметь декларации (как int hello = 10;) после не-деклараций (например, *x = 5;) в C89, в отличие от C99 или C++.

MSVC 2010 по-прежнему не поддерживает C99.

+0

+1, ничего себе, я впечатлен ^^ – Max

+5

Думаю, 11 лет не хватит времени, чтобы многомиллиардная корпорация реализовала стандарт. Серьезно, что может быть причиной отсутствия поддержки? –

1

вы все равно можете объявлять переменные после кодирования. просто измените файл «yourProject.c» на «yourProject.cpp», и он будет работать нормально.

0

typecasting a malloc return pointer in C - это плохая практика и имеет неопределенные результаты.

+0

Конечно, это плохая практика, но она определила результаты. – user411313

+0

http://stackoverflow.com/q/605845/143897 –

+0

вы НИКОГДА не должны указывать указатель возврата malloc на C. в C++ это другая история –

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