AJ wrote:
"Nick Sabalausky" <[email protected]> wrote in message news:[email protected]...
"AJ" <[email protected]> wrote in message news:[email protected]...
"BCS" <[email protected]> wrote in message news:[email protected]...
Hello aJ,

I would think so. Anyway, what I find compelling about guaranteed
widths is the potential to eliminate alignment and padding issues
(that is, be able to control it with confidence across platforms as
one already can on a single platform via compiler pragmas or cmdline
switches).

Ah! I thought you were taking issue with something. D has that and gets most of the porting stuff to work.

It does? Get this to work on "all" platforms:

struct ABC
{
   byte a;
   int b; // may be improperly aligned on some platforms
   int64 c; // same issue
};


// Guarantee packed on all platforms
align() struct ABC
{
   byte a;
   int b; // may be improperly aligned on some platforms
   int64 c; // same issue
};

Well I can do the same thing with pragma or compiler switch in C++. It doesn't mean that thing will work if 32-bit ints have to be aligned on 32-bit boundaries. While nice to have one syntax to do that, it doesn't fix the "problem" (which I haven't expressed correctly probably). What good is a packed structure that has misaligned data members for the platform?


struct ABC {
        version (RequireAlign4) align(4)
        byte a;
        int b;
        int64 c;
}

Reply via email to