Re: C code (return struct)
От: dmikh  
Дата: 22.06.07 16:49
Оценка:
Здравствуйте, George__20, Вы писали:

G__>Kto mojet pomoch raziasnite etot cod. Neponiatni tolko eti skobki ZARANE SPOSIBO


G__>typedef struct {

G__> int a;
G__>} st;

G__>st f()

G__>{
G__> int a;
G__> return (st) {({a;})}; // ???
G__>}




(st) {...}

это compound literal из C99 стандарта. Фактически компилятор здесь делает неименнованную переменную типа st и инициализирует ее тем что в скобках.

({ ...; })

это уже расширение из GNU C. GNU C которое позволяет из блока кода сделать выражение значение и тип которого определяется последним statement в блоке.

В данном примере
return (st) {({a;})};

эквивалентно просто
return a;

ну и такие навороты особого смысла не имеют, если только это не вопрос на интервью.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.