我正在尝试将C-Header转换为pascal,但我正在努力解决以下问题:
typedef struct GLFWwindow GLFWwindow;
由于我不擅长C,我甚至无法弄清楚这句话的意思。因此我也无法翻译它。
是某种匿名结构还是句柄?在随后的代码中,它通常被称为如下:
typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int);
让我最困惑的是,结构没有在任何地方定义(它没有成员?!)。我认为答案非常简单,但我希望有人能帮助我:)。
答案 0 :(得分:1)
Afaik是的,它是一个前向定义,使结构变得模糊,但最终的结构应该在实现之前使用之前声明。
此构造在Pascal中没有直接等效,最好用单个“指针”或指向空记录的指针替换。
第二个构造是一个过程类型声明
type
PGLFWWindow = ^GLFWWindow; // pointer types need explicit declaration
// in most modern pascals
TGLFWwindowposfun = Procedure (param1:PGLFFwindowposfun;
param2,param3:integer);cdecl;
请注意
附录要明确,GLFWINDOW将是一个空记录(GLWINDOW =记录结束;),而不是指向空记录的指针。