Re[2]: C code (return struct)
От: Аноним  
Дата: 26.06.07 10:44
Оценка:
Здравствуйте, dmikh, Вы писали:

D>Здравствуйте, 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__>>}




D>
D>(st) {...} 
D>

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

D>
D>({ ...; })
D>

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

D>В данном примере

D>
D>return (st) {({a;})};
D>

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

D> ну и такие навороты особого смысла не имеют, если только это не вопрос на интервью.


Sposibo bolshoe! eto ne vopros na intervu tam v primere bili statement-i no ia uprastil.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.