d符没有的偏移
import core.sys.windows.setupapi;
void main() {
SP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetail;
uint Offset = DeviceInterfaceDetail.DevicePath.offsetof;
}
报错,char*没有offsetof属性.
ldc用-mtriple=x86_64-windows-msvc编译.
返回CHAR*的方法,_DevicePath为实际成员.
我猜它是动态大小结构,它不能直接映射到D,因此这样.
"成员"很可能是C中的宏.D没有宏,因此使用属性.不过,可改进错误消息.
不,实际上是最后带有CHAR[1]成员的动态大小的结构,参考.
就像用C一样,需要非常小心,并且不可能在栈上正常分配或用作聚集字段.
DevicePath()是返回"动态数组"指针的方便成员,(因为数组也降级为C中指针),因此无需.offsetof手动计算指针.
动态数组实际上是切片,betterC中允许它们.
浙公网安备 33010602011771号