designated initializers extension and sparc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I tried to ask in gcc and was redirected here.

So, I've read the spec about extension

The `[index]' or `.fieldname' is known as a designator. You can also
use a designator (or the obsolete colon syntax) when initializing a
union, to specify which element of the union should be used. For
example,
     union foo { int i; double d; };
     union foo f = { .d = 4 };
will convert 4 to a double to store it in the union using the second
element. By contrast, casting 4 to type union foo would store it
into the union as the integer i, since it is an integer. (See Cast
to Union.)

and wrote the following test:

union foo { int i; double d; };

int main(int argc, char **argv)
{
    union foo f = { .d = 4 };

    ASSERT_EQ(0, f.i);
    ASSERT_FEQ(4.0, f.d);

    return 0;
}

ASSERT_EQ and ASSERT_FEQ are some macros which checks the value and
gives some error messages.

But it fails on sparc. I guess int should be equal 0x40100000 since bytes are in reverse order.
As I know now, this extension is not bi-endian.
So the question is: what shall I do? Does it mean that I just shall forget about that extension usage on sparc?

Sergey





[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux