我需要使用以下函数,但我在使用args时遇到了麻烦:

在这种情况下,未设置IP地址。

cwbCO_SysHandle system;
LPSTR ipAddress = "";
ULONG ipLength = 32;
cwbCO_GetIPAddress(system, ipAddress, &ipLength);

我知道我需要将指向LPSTR的指针作为参数传递,但是设置以下代码也不起作用:
cwbCO_SysHandle system;
LPSTR ipAddress = "";
ULONG ipLength = 32;
cwbCO_GetIPAddress(system, &ipAddress, &ipLength); //Incompatible types LPSTR* and LPSTR

正确的方法是什么?

语法

UINT CWB_ENTRY cwbCO_GetIPAddress(cwbCO_SysHandle系统,LPSTR IPAddress,PULONG长度);

参数

cwbCO_SysHandle系统-输入
Handle that previously was returned by cwbCO_CreateSystem or cwbCO_CreateSystemLike. It is the
IBM i identification.

LPSTR IPAddress-输出
Pointer to a buffer that will contain the NULL-terminated IP address in dotted-decimal notation (in
the form "nnn.nnn.nnn.nnn" where each "nnn" is in the range of from 0 to 255).

PULONG长度-输入/输出
Pointer to the length of the IPAddress buffer. If the buffer is too small to hold the output, including
room for the terminating NULL, the size of the buffer

最佳答案

我找到了文件cwbCO_GetIPAddress

这里的相关部分是(强调):



因此,您的代码应更像这样:

cwbCO_SysHandle system;
char ipAddress[32]; //A buffer, not a pointer!
ULONG ipLength = 32;
cwbCO_GetIPAddress(system, ipAddress, &ipLength);

另外,请确保使用systemcwbCO_CreateSystem初始化cwbCO_CreateSystemLike

关于c++ - C++函数指针类型错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31750172/

10-11 15:20