Mam związek z długim podwójnym polem.ABI związku przejściowego z długim podwójnym zmieniło się w GCC 4.4
Inicjuję pole i przekazuję je do funkcji.
my_union foo;
foo.long_double = 10.10;
bar = baz(foo);
Podczas kompilowania tego kodu uzyskać:
the ABI of passing union with long double has changed in GCC 4.4
wydają się być związane ze zmianami wymienionymi tutaj: http://gcc.gnu.org/gcc-4.4/changes.html
Czy to znaczy, że nie może przejść unii mający long double jako pola ? Dlaczego to? I jak mogę to rozwiązać, ponieważ chcę używać długich podwójnych do przechowywania dużych wartości.
One wyjaśnienie: docs powiedzieć, że ABI przekazywania tych związków jako parametry nie zmieniło, a nie ich układ pamięci (prawdopodobnie zaangażowane rejestry). Przeniesienie ich przez sieci lub zapisanie ich w plikach powinno być bezpieczne. – rodrigo
Zaktualizowana odpowiedź. – xaxxon
Zmieniłem pole na podwójne i teraz działa. Ale dlaczego decyzja projektowa, która jest długa podwójna, jest zabroniona? – jluu