Delphi 如何从C#define转换为函数
我有一个C头,定义如下Delphi 如何从C#define转换为函数,delphi,Delphi,我有一个C头,定义如下 #define tds_accept accept #define tds_getpeername getpeername #define tds_getsockopt getsockopt #define tds_getsockname getsockname #define tds_recvfrom recvfrom 在这里,我应该将defines转换为Delphi并分配函数(来自Winsock2)。我尝试了const和type type td
#define tds_accept accept
#define tds_getpeername getpeername
#define tds_getsockopt getsockopt
#define tds_getsockname getsockname
#define tds_recvfrom recvfrom
在这里,我应该将defines转换为Delphi并分配函数(来自Winsock2)。我尝试了const
和type
type
tds_accept = accept;
tds_getpeername = getpeername;
tds_getsockopt = getsockopt;
tds_getsockname = getsockname;
tds_recvfrom = recvfrom;
并且存在错误E2007常量或预期类型标识符
或E2035实际参数不足
可以用Delphi实现吗?使用类型化变量,例如:
var
tds_accept : function(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket; stdcall;
tds_getpeername : function(s: TSocket; var name: TSockAddr; var namelen: Integer): Integer; stdcall;
tds_getsockopt : function(s: TSocket; level, optname: Integer; optval: PAnsiChar; var optlen: Integer): Integer; stdcall;
tds_getsockname : function(s: TSocket; var name: TSockAddr; var namelen: Integer): Integer; stdcall;
tds_recvfrom : function(s: TSocket; var Buf; len, flags: Integer; var from: TSockAddr; var fromlen: Integer): Integer; stdcall;
initialization
tds_accept := accept;
tds_getpeername := getpeername;
tds_getsockopt := getsockopt;
tds_getsockname := getsockname;
tds_recvfrom := recvfrom;
或:
改用类型化变量,例如:
var
tds_accept : function(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket; stdcall;
tds_getpeername : function(s: TSocket; var name: TSockAddr; var namelen: Integer): Integer; stdcall;
tds_getsockopt : function(s: TSocket; level, optname: Integer; optval: PAnsiChar; var optlen: Integer): Integer; stdcall;
tds_getsockname : function(s: TSocket; var name: TSockAddr; var namelen: Integer): Integer; stdcall;
tds_recvfrom : function(s: TSocket; var Buf; len, flags: Integer; var from: TSockAddr; var fromlen: Integer): Integer; stdcall;
initialization
tds_accept := accept;
tds_getpeername := getpeername;
tds_getsockopt := getsockopt;
tds_getsockname := getsockname;
tds_recvfrom := recvfrom;
或:
Delphi没有预处理器。因此,您通常会找到不同的方法来解决在C/C++中使用预处理器处理的问题。就我个人而言,我认为我应该使用这样的加载时间链接:
function tds_accept(...): TSocket; external dllname name 'accept';
等等。Delphi没有预处理器。因此,您通常会找到不同的方法来解决在C/C++中使用预处理器处理的问题。就我个人而言,我认为我应该使用这样的加载时间链接:
function tds_accept(...): TSocket; external dllname name 'accept';
等等。AFAIR delphi不支持宏,您可以使用指向函数或外部宏处理器的指针:AFAIR delphi不支持宏,您可以使用指向函数或外部宏处理器的指针: