"AJ" <a...@nospam.net> wrote in message news:hbp85j$238...@digitalmars.com... > > "Chris Nicholson-Sauls" <ibisbase...@gmail.com> wrote in message > news:hbou95$1al...@digitalmars.com... >> AJ wrote: >>> "Nick Sabalausky" <a...@a.a> wrote in message >>> news:hbonbp$to...@digitalmars.com... >>>> "AJ" <a...@nospam.net> wrote in message >>>> news:hboaeu$5s...@digitalmars.com... >>>>> "BCS" <n...@anon.com> wrote in message >>>>> news:a6268ffbb0a8cc20817fe1f...@news.digitalmars.com... >>>>>> 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; >> } >> > > Please 'splain the above.
http://www.digitalmars.com/d/1.0/attribute.html#align http://www.digitalmars.com/d/1.0/version.html#version http://dictionary.reference.com/browse/explain?r=75