Привет, Alexey !
25 Feb 08 , 10:45 Alexey V Bugrov писал к Nickita A Startcev:
NA>>>> return ((int []){1,2,3,4})[1]; AVB>>> test.c AVB>>> test.c(3) : error C2059: syntax error : '{' NA>> Чем чобирал?
AVB> MSVC2005.
AVB>>> Откуда такая чушь? Какому стандарту она соответствует?
NA>> === a.c === NA>> int test1() NA>> { NA>> return ((int []){1,2,3,4})[1]; NA>> }
AVB> $ gcc -Wextra -Wall -pedantic -ansi test.c AVB> test.c: In function `main': AVB> test.c:3: warning: ISO C90 forbids compound literals
какой версии у тебя гцц? мой гцц не знает про -Wextra
NA>> int test2() NA>> { NA>> return ({goto L; 0;}) && ({L: 5;}); NA>> }
AVB> $ gcc -Wextra -Wall -pedantic -ansi test.c AVB> test.c: In function `test2': AVB> test.c:3: warning: ISO C forbids braced-groups within expressions AVB> test.c:3: warning: ISO C forbids braced-groups within expressions
убери -pedantic - и всё соберется.
NA>> gcc -c a.c - собирает NA>> gcc -c -W -Wall a.c - собирает NA>> gcc -std=c99 -W -Wall -c a.c собирает NA>> gcc -std=c89 -W -Wall -c a.c собирает.
AVB> Ага. Еще скажи даже ворнингов не выдает.
именно. без -педантик ворнингов не дает.
NA>> Какие еще стандарты вы помните?
AVB> Вы таки сами посмотрите в С89 и C99. А гнусное поделие, при всех его AVB> достоинствах, слишком либерально трактует стандарты, впрочем даже оно AVB> против применения групп операторов внутри выражений.
... но только в педантичном режиме. а без педантика - всё нормально. То есть, такие маразматические выражения таки часть языка.
кстати, ключ -педантик форсирует применение стандарта 'iso с89', который не самый новый.
. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... "кАнтора Государственной Безопасности"