LINUX.ORG.RU

GCC. стандарт С


0

0

GCC использует по умолчанию ведь стандарт C99 с расширениями GCC.

так почему GCC находит ошибку в

for (int i = 0; i < 5; i++)

???

ведь тут ведь нету ошибок, согласно с C99. почему возможность объявлять переменную прямо в for убрали ? О_о

anonymous
Ответ на: комментарий от snizovtsev

да нет. вроде в С99 уже можно объявлять переменную прямо в for

anonymous
()
Ответ на: комментарий от Uncle_Theodore

Uncle_Theodore, ну я знаю, что так можно... =[ я просто спрашиваю, зачем это убрали со стандартного старнадрта GCC (или как его правильно назвать). и где бы почитать, какие еще возможности убрали? какие добавились не надо, меня оч интересует, что убрали с того, что было в C99. :)

anonymous
()
Ответ на: комментарий от Dudraug

Dudraug, та я это где-то вычитал был... а что, разве это неправда? О_о возможно...

anonymous
()
Ответ на: комментарий от Correctnoe_imya_polzovatelya

>о_О cтранно у меня не находило, и я прекрасно все переменный в цикле объявлял

[dudraug@localhost ~]$ cat mm.c
#include <stdio.h>
#include <ncurses.h>

int main()

{
// ну как то так.
for (int a=0; a<4; a++)
printf("%i\n", 3.0);
return 0;
}

[dudraug@localhost ~]$ gcc mm.c
mm.c: In function ‘main’:
mm.c:8: error: ‘for’ loop initial declaration used outside C99 mode
[dudraug@localhost ~]$ gcc mm.c -std=c89
mm.c: In function ‘main’:
mm.c:7: error: expected expression before ‘/’ token
mm.c:7: error: stray ‘\321’ in program
mm.c:7: error: stray ‘\213’ in program
[dudraug@localhost ~]$ gcc mm.c -std=c99
[dudraug@localhost ~]$

В общем я так и не понял какой стандарт используется.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Странно.

$ gcc mm.c
test.c: В функции 'main'
test.c:8: ошибка: 'for' loop initial declaration used outside C99 mode

Но

$ gcc -std=c99 mm.c
$ ./a.out
0
0
0
0

$ gcc --version
gcc (GCC) 4.1.2

P.S. Slackware 12.0

anonymous
()
Ответ на: комментарий от anonymous

Извините,

s/test/mm/

Файл test.c == mm.c

anonymous
()
Ответ на: комментарий от anonymous

В том же man gcc говорится (у меня 4.2):

c99
c9x
iso9899:1999
iso9899:199x
ISO C99. Note that this standard is not yet fully supported;
see <http://gcc.gnu.org/gcc-4.2/c99status.html>; for more infor-
mation. The names c9x and iso9899:199x are deprecated.

gnu89
Default, ISO C90 plus GNU extensions (including some C99 fea-
tures).

gnu99
gnu9x
ISO C99 plus GNU extensions. When ISO C99 is fully implemented
in GCC, this will become the default. The name gnu9x is depre-
cated.

Остается только сходить по ссылке и посмотреть там табличку уже присобаченных фичей стандарта...

Uncle_Theodore ★★
()
Ответ на: комментарий от Dudraug

а... спс :) т.е. дефолтный стандарт называется gnu89 я так понял?..

anonymous
()

#define _SOURCE_C99
если уж очень хочется :)

amoralyrr ★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.