原文
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;
}
有许多现有方法
可实现它
.添加更多语言特征
以复制现有功能
需要非常有力的案例
.