Здравствуйте, 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__>}
Так как этот код не является ни С++, ни С99, ни С89, не представляестся возможным его объяснить. Уточни, все ли правильно, не напутал ли ты чего.
Может, там такое?
typedef struct
{
int i_;
}A;
void fun(A a)
{
}
int main()
{
int a = 0;
fun((A){a});
(А){а};
}
Здравствуйте, 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 a[3] = {{1}, {2}, {3}};
только чтото в твоем примере все равно скобок многовато...
Re[2]: C code (return struct)
От:
Аноним
Дата:
21.06.07 06:00
Оценка:
Здравствуйте, Seon, Вы писали:
S>Здравствуйте, 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__>>}
S>инициализация возвращаемого значения.
S>st a[3] = {{1}, {2}, {3}};
S>только чтото в твоем примере все равно скобок многовато...
Ia proboval umenshit' skobki oshibku daiot gcc(C compiler).
Re[2]: C code (return struct)
От:
Аноним
Дата:
21.06.07 06:09
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>Здравствуйте, 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__>>}
L_L>Так как этот код не является ни С++, ни С99, ни С89, не представляестся возможным его объяснить. Уточни, все ли правильно, не напутал ли ты чего. L_L>Может, там такое? L_L>
L_L>typedef struct
L_L>{
L_L> int i_;
L_L>}A;
L_L>void fun(A a)
L_L>{
L_L>}
L_L>int main()
L_L>{
L_L> int a = 0;
L_L> fun((A){a});
L_L> (А){а};
L_L>}
L_L>
Etot code normalno kampiliruetca na cc-3.4 a tvoi napisani code sovsem drugoe. Nado napisat' function katori vozvrashaet struct a ne poluchaet. mojno bilo napisat' tak :
typedef struct {
int a;
} st;
st f()
{
int a;
st s;
s.a = a;
return s;
}
Здравствуйте, 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;
ну и такие навороты особого смысла не имеют, если только это не вопрос на интервью.
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.