原文
C和D程序员,已知道如何对齐对象与填充字段.这是一项基本技能.
如果添加extern(C)和extern(D)到位域中,则你要学习两个新的语法结构及其含义.也容易忘记他们的区别.
快速,extern(C)和extern(D)函数间的调用约定有什么区别?
有了pad字段,不必学习新东西,即使对初学者来说,也很容易理解.
再举一例:
struct U {
unsigned int x;
unsigned long long y: 30;
unsigned long long z: 34;
}
struct U2 {
unsigned int x;
unsigned long long y: 34;
unsigned long long z: 30;
}
:简单的方法:
struct U {
unsigned int x;
unsigned int y:30;
unsigned long long z:34;
}
or:
struct U2 {
unsigned int x;
unsigned int pad;
unsigned long long y:30;
unsigned long long z:34;
}
根据期望布局.这很简单,可预测且可移植.对读者来说,这都不会是一个谜–它的可读性非常强.
可压匿名联进服务中,如果"x"类型不透明,这会很方便:
struct U {
T x;
union {
ulong pad; //来对齐
struct {
ulong y: 30;
ulong z: 34;
}
}
}
或使用align:
struct U {
T x;
align(8)
ulong y:30, z:34;
}
有许多现有方法可实现它.添加更多语言特征以复制现有功能需要非常有力的案例.



















