c++里面char buf[length];这种提示报错了....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
int length= 4;
char buf[length];
这是在循环里面的,length是个变量,我需要修改的...
提示的是,需要是const类型的.......
谢谢了.
[解决办法]
c++数组定义要使用编译时常量哇~
[解决办法]
那就用 malloc, new 或 vector 之类的吧。
[解决办法]
int const length = 4;
[解决办法]
那个notificationHandler的代码是怎样的?
定义变长的char buf[length]应该是没有问题的,我试验了一下,能通过编译运行正常
#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>int main(){ /*1、创建socket*/ int sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1) perror("socket server"),exit(-1); /*2、准备地址,本机地址*/ struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(10222); addr.sin_addr.s_addr = inet_addr("127.0.0.1"); /*3、绑定*/ int res = bind(sockfd, (struct sockaddr*)&addr, sizeof(addr)); if(res==-1)perror("绑定失败"),exit(-1); printf("绑定成功\n"); /*4、监听*/ if(listen(sockfd, 100)==-1) perror("服务器监听失败"),exit(-1); printf("服务器开始服务\n"); /*5、等待客户端连接*/ while(1){ struct sockaddr_in fromaddr; socklen_t len = sizeof(fromaddr);//需要有值 int fd = accept(sockfd, (struct sockaddr*)&fromaddr,&len); if(fd==-1)perror("客户端连接错误"),exit(-1); else printf("有客户端连接上来,它是:%s\n",inet_ntoa(fromaddr.sin_addr)); /*6、进行通信*/ int length=100; char buf[length];//--------------->这里 recv(fd, buf, sizeof(buf), 0); printf("%s说:%s\n", inet_ntoa(fromaddr.sin_addr), buf); send(fd, "欢迎你,客户端\n", strlen("欢迎你,客户端\n")+1, 0); sleep(3); /*7、关闭socket*/ close(fd); } close(sockfd);}
[解决办法]
C可以, cpp不可用, 一些cpp编译器也许会加这个扩展
[解决办法]
C语言的话,在支持C99标准的编译器里是支持变长数组的。
[解决办法]
FByte.h 的头文件呢?也帖出来吧,这样你才容易得到答案。