A probléma tárgya a következő értékadás:
(a ? b : c) = 5;
Tehát az értékadás bal oldalán egy feltételes kifejezés szerepel. Első ránézésre elég furcsa, de végülis van értelme, és mivel a kifejezés eredménye mindenképp egy változó lesz, ezért akár le is lehetne fordítani. Sőt, ennek alapján a gcc-nek le is kellene fordítania, de nem teszi.
Egyébként a szerkezet gyakran hasznos tud lenni, sokszor jó lett volna már, pl. gondoljunk egy bináris keresésre. Adott esetben még némi memóriát/sebességet is meg lehet spórolni vele. Ha mégis ilyet szeretnénk csinálni, akkor írhatjuk így:
*(a ? &b : &c) = 5;
Kicsit nyakatekert, de működik. Olvashatóság szempontjából persze nem a legjobb... :)
(a ? b : c) = 5;
Tehát az értékadás bal oldalán egy feltételes kifejezés szerepel. Első ránézésre elég furcsa, de végülis van értelme, és mivel a kifejezés eredménye mindenképp egy változó lesz, ezért akár le is lehetne fordítani. Sőt, ennek alapján a gcc-nek le is kellene fordítania, de nem teszi.
Egyébként a szerkezet gyakran hasznos tud lenni, sokszor jó lett volna már, pl. gondoljunk egy bináris keresésre. Adott esetben még némi memóriát/sebességet is meg lehet spórolni vele. Ha mégis ilyet szeretnénk csinálni, akkor írhatjuk így:
*(a ? &b : &c) = 5;
Kicsit nyakatekert, de működik. Olvashatóság szempontjából persze nem a legjobb... :)


És szerintem a az IBM oldalán lévő manualt is félre értetted mert ott is csak azt írják, hogy: "This extension is available when compiling in one of the extended language levels."
(Bár ott más alternatívát ajánlanak ("(a ? b = 5 : (c = 5)")).