麻烦大家帮忙看看error C2064: 项不会计算为接受 4 个参数的函数错误

dan156336866 2012-02-10 11:20:47
代码:
#include "stdafx.h"
#include <Winsock2.h>
#include <stdio.h>
#include <atlstr.h>
#include<iostream>
#include<stdlib.h>
using namespace std;

void f(int in[8],char *res[8])
{
char** result =new char*[8];
for(int i=0;i<8;++i)
{
result[i] = new char [5];
strcpy_s(result[i],5,"");
}
for(int i=0;i<8;i++)
{ char resulta[5]={0,0,0,0,0};

resulta[0]='0';
resulta[1]='x';

if((in[i]>>4)<10)
{
resulta[2]=(in[i]>>4)+'0';
}
else
{
resulta[2]=(in[i]>>4)-10+'A';
}

if((in[i] & 0x0F)<10)
{
resulta[3]=(in[i] & 0x0F)+'0';
}
else
{
resulta[3]=(in[i] & 0x0F)-10+'A';
}

resulta[4]=0;
strcat_s(result[i],5,resulta);
}
for ( int j=0;j<8;++j )
{
res[j]=result[j];
}
}
int main(int argc, char* argv[])
{
char *Recv[119]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","苏","川","鲁","粤","浙","闽","晋","鄂","皖","京","黑","冀","津","宁","吉","辽","陕","云","湘","新","沪","豫","赣","桂","渝","甘","蒙","贵","青","藏","琼","港","澳","台","领","使","警","学","挂","试","超","军","空","海","北","沈","兰","济","南","广","成","备","消","边","通","林","金","电","境","演","习","甲","乙","丙","丁","戊","己","庚","辛","壬","癸","子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};
char *send[8]={"3","苏", "B", "2", "M", "3", "4", "5"};


int C[8];
for (int i=0;i<8;i++)
{
for (int j=0;j<119;j++)
{
if (*send[i]==*Recv[j])
{
C[i]=j;
break;
}
}
}
for(int k=0;k<8;k++)
cout<<C[k]<<endl;

char *rev[8]={0,0,0,0,0,0,0,0};
f(C,rev);
for ( int j=0;j<8;++j )
{
cout<<rev[j]<<endl;
}


WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1);
err = WSAStartup(wVersionRequested, &wsaData);
if( err != 0)
{
return 1 ;
}

if( LOBYTE( wsaData.wVersion) != 1 || HIBYTE( wsaData.wVersion) !=1 )
{
WSACleanup();
return -2;
}

SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(55543);


bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));

listen(sockSrv, 5);

SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);

while(1)
{
SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);
//char sendBuf[8]={0x01, 0x24, 0x0B, 0x02, 0x16, 0x03, 0x04, 0x05};

send( sockConn, rev, 8, 0 );
char recvBuf[100];
recv( sockConn, recvBuf, 100, 0 );
closesocket(sockConn);
}

system("PAUSE");
return 0;
}
发送8位16进制数到串口的程序,编译的时候提示error C2064: 项不会计算为接受 4 个参数的函数,麻烦帮忙看看哦。
...全文
1027 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
面包大师 2012-02-10
  • 打赏
  • 举报
回复
char *rev[8];你这儿定义的是指针数组
send( sockConn, rev, 8, 0 );这个函数的第二个参数却要指针。。。。所以这儿要传也是传rev[0]、rev[1]什么的
面包大师 2012-02-10
  • 打赏
  • 举报
回复
第一,你定义变量要注意char *send[8]={"3","苏", "B", "2", "M", "3", "4", "5"};名字不要和库函数(send
)重复了
dan156336866 2012-02-10
  • 打赏
  • 举报
回复
第二个参数是错了,提示不能将参数 2 从“char *[8]”转换为“const char *”[Quote=引用 1 楼 visualeleven 的回复:]

send( sockConn, rev, 8, 0 );
第二个参数错了吧
[/Quote]
Eleven 2012-02-10
  • 打赏
  • 举报
回复
send( sockConn, rev, 8, 0 );
第二个参数错了吧
面包大师 2012-02-10
  • 打赏
  • 举报
回复
char sendBuf[8]={0x01, 0x24, 0x0B, 0x02, 0x16, 0x03, 0x04, 0x05};因为这个是个字符数组,这个数组的名字sendBuf就是他的地址,就是一个char *类型,所以不会出错
dan156336866 2012-02-10
  • 打赏
  • 举报
回复
谢谢,直接用rev[8]={0x01, 0x24, 0x0B, 0x02, 0x16, 0x03, 0x04, 0x05}可以实现,但是用我转换后用(rev[0],rev[1],rev[2],rev[3],rev[4],rev[5],rev[6],rev[7])
的却出现问题了,你可以帮我看看嘛?;[Quote=引用 4 楼 czh3642210 的回复:]

char *rev[8];你这儿定义的是指针数组
send( sockConn, rev, 8, 0 );这个函数的第二个参数却要指针。。。。所以这儿要传也是传rev[0]、rev[1]什么的
[/Quote]

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧