[英]How to translate an empty C struct inside struct to Delphi?
如何字面翻译下面为空,C struct
的内部struct
德尔福(从WINNT.H):
typedef struct _TP_CALLBACK_ENVIRON_V3 {
...
struct _ACTIVATION_CONTEXT *ActivationContext;
...
} TP_CALLBACK_ENVIRON_V3;
我倾向于只使用Pointer
因为绝对不能操纵此结构,并且它还是一个指针。 我只是很好奇一个人将如何按字面意义翻译它(如果可能的话)。 我在想这样的事情:
type
PActivationContext = ^TActivationContext;
TActivationContext = record
end;
TTPCallbackEnvironV3 = record
...
ActivationContext: PActivationContext;
...
end;
但是,您知道,一条空的记录...那么,您如何将上述结构转换为Delphi?
C结构是不完整类型。 C代码是用于实现不透明指针的常用技术。 通过在C中以这种方式实现它,就可以使类型struct _ACTIVATION_CONTEXT*
类型的变量与其他指针的分配不兼容,从而具有类型安全性。 好吧,除了void*
指针与所有指针类型都兼容分配。
在Delphi中,没有不完整的类型。 因此,我认为最好的解决方案正是您所提出的。 准确地模仿C代码并不是特别重要。 您的目标是获得好处,特别是类型安全。 您提出的建议可能会和您获得的一样好。
另一方面,它取决于此类型的可见性。 如果它是非常私有的,也许仅在单元的实现部分中声明,并且很少使用,那么您可能会采取这样的立场:声明空记录稍微有点过头。 您可能会得出结论, PActivationContext = Pointer
是合理的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.