【发布时间】:2018-08-01 15:41:59
【问题描述】:
我像往常一样定义了我的 char,尽管我将它命名为 buf。我不断收到错误消息:
“char”类型的参数与“void*”类型的参数不兼容
如果我将buf设置为void*,它将无法将4096作为参数传入。
那么,我该如何解决这个问题?有没有人遇到过这样的问题?
char buf{4096};
string userinput;
do
{
cout << "> " << endl;
getline(cin, userinput);
if (userinput.size() > 0) // make sure the user typed something in
{
int SendResult = send(sock, userinput.c_str, userinput.size() + 1, 0);
if (SendResult != SOCKET_ERROR)
{
ZeroMemory(buf, 4096);
int bytesReceived = recv(sock, buf, 4096, 0);
if (bytesReceived > 0)
{
cout << "SERVER" << string(buf, 0, bytesReceived) <<
endl;
}
}
}
【问题讨论】:
-
char buf{4096}应该是char buf[4096]。您创建了一个字符缓冲区并尝试使用值 4096 填充它。 -
@tadman,可能是winapi function
-
@chris 很好。
SendResult命名约定让我大吃一惊。 -
char buf{4096}声明了一个char,其值为4096。你想要char buf[4096] -
@MilesBudnek 并不是说 4096 将永远适合具有 8 位字符的“无聊”平台...
buf可能是 0 几乎所有这些。