Delphi 这在pascal中是什么意思:const char**pzTail
我对这个声明有点迷茫:Delphi 这在pascal中是什么意思:const char**pzTail,delphi,Delphi,我对这个声明有点迷茫: SQLITE_API int SQLITE_STDCALL sqlite3_prepare( const char **pzTail /* OUT: Pointer to unused portion of zSql */ ); 这是否意味着: out pzTail: PansiChar out pzTail: PPansiChar const pzTail: PAnsiChar const pzTail: PPAnsiChar 注意:sqlite3_pr
SQLITE_API int SQLITE_STDCALL sqlite3_prepare(
const char **pzTail /* OUT: Pointer to unused portion of zSql */
);
这是否意味着:
out pzTail: PansiChar
out pzTail: PPansiChar
const pzTail: PAnsiChar
const pzTail: PPAnsiChar
注意:sqlite3_prepare的doc表示pzTail可以为空
const pzTail:PPAnsiChar
将是最接近和最正确的直译,特别是根据sqlite3_prepare
文档,由于pzTail
允许为零
从语义上讲,如果你从未通过nil,那么你应该使用
var pzTail:PAnsiChar
或out pzTail:PAnsiChar
。const pzTail:PPAnsiChar
将是最接近和最正确的直译,特别是因为pzTail
被允许为零,根据sqlite3\u准备文档
从语义上讲,如果您从未通过nil,那么您应该使用var pzTail:PAnsiChar
或out pzTail:PAnsiChar
。我将其声明为var pzTail:PByte
。谢谢victoria,但这样您将如何通过nul?因为文档上说:“如果pzTail不是空的,那么*pzTail被设置为…”我将声明它为var pzTail:PByte
。谢谢victoria,但是这样你将如何通过nul?因为文档说:“如果pzTail不是空的,那么*pzTail是为了……”谢谢雷米,我也这么想,所以这意味着System.Sqlite.pas是错误的;(因为他们宣布这是一个例外:PansiChar@loki这不是RTL第一次犯错误,将var
/out
用于一个可为零的参数。多年来,他们在许多Win32 API函数中犯了这个错误。感谢remy,我也这么想,所以这意味着System.Sqlite.pas是错误的;(因为他们宣布这是一个例外:PansiChar@loki这不是RTL第一次犯错误,将var
/out
用于一个可为零的参数。多年来,他们在许多Win32 API函数中犯了这个错误。