3

JEDI Windows APIJwaNtSecApi.pas中,C SECURITY_LOGON_TYPE被翻译成 Delphi 如下:enum

SECURITY_LOGON_TYPE = (
  seltFiller0,
  seltFiller1,
  Interactive,
  Network,
  Batch,
  Service,
  Proxy,
  Unlock,
  NetworkCleartext,
  NewCredentials,
  RemoteInteractive,
  CachedInteractive,
  CachedRemoteInteractive,
  CachedUnlock
);
PSECURITY_LOGON_TYPE = ^SECURITY_LOGON_TYPE;

转换从非零值开始的 C 枚举时,手动填充值是否真的必要?

手动填充值是否只是旧 Delphi 编译器的一种解决方法?

4

1 回答 1

2

转换从非零值开始的 C 枚举时,是否真的需要手动填充值?

不,它们不是必需的。如果您使用 Delphi 6 或更高版本进行编译,您可以这样编写:

SECURITY_LOGON_TYPE = (
  Interactive = 2,
  Network,
  ...

事实上,我相信在 Delphi 6 中引入此功能的原因是为了更容易编写 C 标头翻译。这与 Delphi 6 开发阶段有关,因为它与 Kylix 的第一个版本密切相关,当然与 Linux C 库有很多交互。

于 2012-11-08T17:32:23.473 回答