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
中允许它们.
本文同步分享在 博客“fqbqrr”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。