小编Ste*_*rst的帖子

Delphi - 如何将'Type'作为参数传递

我想知道是否可以将声明的类型(在本例中为记录)传递给我的函数.我甚至不会问它是否不适用于该SizeOf()函数,因为它可以将类型作为参数.

我正在翻译C中的代码,我希望尽可能接近原始代码.C程序将PushArray和PushStruct声明为宏.由于Delphi没有宏支持,我试图将它们变成函数.

我用谷歌搜索了一下,似乎我可以使用泛型类型.就像function PushStruct<T>(Arena : Pmemory_arena; dtype : <T>)但你只能在一个面向对象的应用类型使用.

function PushSize_(Arena : Pmemory_arena; Size : memory_index) : pointer;
begin
    Assert((Arena^.Used + Size) <= Arena^.Size);
    Result := Arena^.Base + Arena^.Used;
    Arena^.Used := Arena^.Used + Size;
end;

function PushStruct(Arena : Pmemory_arena; dtype : ?) : pointer;
begin 
    result := PushSize_(Arena, sizeof(dtype));
end;

function PushArray(Arena : Pmemory_arena; Count: uint32; dtype : ?) : pointer;
begin
    result := PushSize_(Arena, (Count)*sizeof(dtype))
end;
Run Code Online (Sandbox Code Playgroud)

这是原始的C代码:

#define PushStruct(Arena, type) (type *)PushSize_(Arena, sizeof(type))
#define PushArray(Arena, …
Run Code Online (Sandbox Code Playgroud)

c delphi types parameter-passing

3
推荐指数
1
解决办法
764
查看次数

标签 统计

c ×1

delphi ×1

parameter-passing ×1

types ×1