visual c++编译器出问题了

来源:百度知道 编辑:UC知道 时间:2024/05/22 03:17:33
我在网上找了个源码,可以运行,我 照着也自己写了个socket的程序,
但是我现在发现它总是通不过编译,到底怎么回事?
这是编译器的设置那里错了吗?
下面这个程序,我连那个max的 数值大小都不能变,一换就会报错,
现在甚至#define MAX 200; 那一句的分号要是去掉了也会报错,我的神啊,我真的要疯了,

#include <windows.h>
#include <winsock.h>
#include <iostream.h>
#pragma comment(lib,"ws2_32.lib")
#define port (u_short)44965
#define MAX 200; //这里的200换成其他数字就会报错,名字也不能改了

#define NO_FLAGS_SET 0

int main()
{
WSADATA date;
SOCKADDR_IN seversockaddr;
SOCKADDR_IN clientsockaddr;
SOCKET seversocket;
SOCKET clientsocket;
int status;
int addrlen=sizeof(SOCKADDR_IN);
char buf[200];
status=WSAStartup(MAKEWORD(1,1),&date);
if (status!=0)
{ cout<<"error"<<endl;
}
memset(&seversockaddr,0,sizeof(seversockaddr));

seversockaddr.sin_port=htons(port);
seversockaddr.sin_family=AF_INET;
seversockaddr.sin_addr.s

#define MAX 200;
很显然 这里MAX被定义为一个数字,后面的 “;”是不能要的,要不就是定义了一个字符串“200;”改成这样:
#define MAX 200

就ok了

winsock.h 是microsoft公司做的头文件,不可能错的,这一点确信无疑,除非你自己改动了里面的内容

现在所报的winsock.h错误,都是由于你自己的程序里面有错误,导致编译器顺序编译到这个文件后不通才引起的,所以重点还是检查你自己的代码

第一个错:不能换MAX是因为你在定义的时候多打了一个‘;’;
下面的错误是因为你引入的2.0版本的库但你开启的却是1.0版本的winsock;
改成这样就可以了:status=WSAStartup(MAKEWORD(2,2),&date);