首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++里边char buf[length];这种提示报错了.

2012-07-04 
c++里面char buf[length]这种提示报错了....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!int length

c++里面char buf[length];这种提示报错了....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

int length= 4;
char buf[length];
这是在循环里面的,length是个变量,我需要修改的...
提示的是,需要是const类型的.......
谢谢了.


[解决办法]
c++数组定义要使用编译时常量哇~
[解决办法]
那就用 malloc, new 或 vector 之类的吧。
[解决办法]
int const length = 4;
[解决办法]
那个notificationHandler的代码是怎样的?
定义变长的char buf[length]应该是没有问题的,我试验了一下,能通过编译运行正常

C/C++ code
#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 的头文件呢?也帖出来吧,这样你才容易得到答案。
探讨
谢谢你,这是我的全部代码:

C/C++ code


#include <stdlib.h>
#include <WinSock2.h>
#include "FByte.h"

#pragma comment(lib, "ws2_32.lib")

void notificationHandler(char *buf, int length);
void monitorN……

[解决办法]
int length=4;
char *buf=(char *)malloc(sizeof(char)*length);
数组长度要用常量 
不知道lz问的是不是有别的因素
 只能想到用这个

热点排行