【发布时间】:2014-12-01 17:00:38
【问题描述】:
如何将 struct 内的以下空 C struct 逐字翻译为 Delphi(来自 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?
【问题讨论】:
-
空记录的优点是它是一种特定的不同类型,即指向此类记录的指针是指向特定类型的不透明指针。否则,没有区别。不过,我个人更喜欢空记录。 FWIW,在 C 中,不需要一个空结构,只是一个未知结构。
-
@Rudy,但如果它不一定是空结构,那么不应该使用不透明指针吗?
-
@TLama:我想说,指向不完整结构的指针非常不透明。顺便说一句:标准 C 中没有空结构(尽管例如 Gcc 默认允许它作为扩展)。