已經改變了我有很長的雙領域的結合。合格工會長雙ABI在GCC 4.4
我初始化一個字段,並把它傳遞給一個函數。
my_union foo;
foo.long_double = 10.10;
bar = baz(foo);
當編譯此代碼我得到:
the ABI of passing union with long double has changed in GCC 4.4
似乎與這裏提到的更改:http://gcc.gnu.org/gcc-4.4/changes.html
這是否意味着我無法通過具有長兼作領域的工會?爲什麼是這樣?我該如何解決這個問題,因爲我想使用long double來存儲大數值。
一澄清:該文檔說,ABI傳遞這些工會作爲參數發生了變化,不是他們的內存佈局(可能是涉及的寄存器)。因此,將它們移動到網絡上或將它們保存在文件中應該是安全的。 – rodrigo
已更新的答案。 – xaxxon
我將該字段更改爲雙倍,現在可以工作。但是爲什麼設計決定這個雙重禁止? – jluu