我正在将C库转换为Delphi。
我在转换以下代码时遇到了问题。
这是用于通信的结构体,因此顺序必须正确。
Tparam_union_params_t = packed record
case Integer of
0: (param_float:single);
1: (param_int32:Int32);
2: (param_uint32:UInt32);
...
...
end;
Tparam_union_t = packed record
param:Tparam_union_params_t // This method requires var name.
type:UInt8;
end;
C语言
#ifdef __GNUC__
#define PACKED( __Declaration__ ) __Declaration__ __attribute__((packed))
#else
#define PACKED( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ __pragma( pack(pop) )
#endif
PACKED(
typedef struct param_union {
union {
float param_float;
int32_t param_int32;
uint32_t param_uint32;
int16_t param_int16;
uint16_t param_uint16;
int8_t param_int8;
uint8_t param_uint8;
uint8_t bytes[4];
}; // This no-named union. no-named is important.
uint8_t type;
}) param_union_t;
我的方法需要变量名,但原始的 C 代码没有命名。我该如何将 C 中的匿名联合或结构体转换为 Delphi?
PSomething = ^TSomething;
这样的行在这种翻译中非常常见。 - Rudy Velthuis