digitalmars.D.bugs - [Issue 16270] New: scoped Alignment
- via Digitalmars-d-bugs (82/82) Jul 12 2016 https://issues.dlang.org/show_bug.cgi?id=16270
https://issues.dlang.org/show_bug.cgi?id=16270 Issue ID: 16270 Summary: scoped Alignment Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: TeddyBear12311 gmail.com C++ has the ability to align all members of struct/class in a scope: e.g., #pragma pack(push,16) Without this in D, it requires aligning each type manually. It may seem like trivial work, but it is not and posses serious problems when converting C code that uses scoped alignment. A simple align(n) { struct x { int a, b, c; } } would be identical do align(n) struct x { align(n) int a, b, c; } It should be a trivial enhancement. I'm only concerned about the member alignment. Alternatives are align(n) { struct x { int a, b, c; } } would be identical do struct x { align(n) int a, b, c; } or malign(n) { struct x { int a, b, c; } } would be identical do struct x { align(n) int a, b, c; } pragma could be used pragma(align(n)) struct x { int a, b, c; } struct y { int a, b, c; } pragma(align(m)) struct z { int a, b, c; } would be identical do struct x { align(n) int a, b, c; } struct y { align(n) int a, b, c; } struct z { align(m) int a, b, c; } The responses that a simply search and replace are not acceptable. It is not robust, may quietly fail, etc. Adding by hand to every struct or member is also not acceptable because because it depends on size. (trivial for one struct but not so for 100 structs) I believe this is not an enhancement but an oversight. It is required for large complex code unless man hours is not a factor. --
Jul 12 2016