C ++函数指针不正确的类型

时间:2015-07-31 15:44:09

标签: c++ pointers types arguments lpstr

我需要使用以下函数,但我遇到了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

1 个答案:

答案 0 :(得分:4)

我找到了文档,cwbCO_GetIPAddress

这里的相关部分是(重点补充):

  

LPSTR IPAddress - 输出   指向缓冲区的指针,它将以点分十进制表示法包含以NULL结尾的IP地址(格式为“nnn.nnn.nnn.nnn”,其中每个“nnn”的范围为0到255)。

所以你的代码应该更像这样:

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

另外,请务必使用systemcwbCO_CreateSystem初始化cwbCO_CreateSystemLike