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

,C++编译报莫名其妙的语法异常

2012-12-24 
求助,C++编译报莫名其妙的语法错误。看一本书的实例,想自己操作一下,是一个发送TCP/IP协议的客户端程序。报

求助,C++编译报莫名其妙的语法错误。
看一本书的实例,想自己操作一下,是一个发送TCP/IP协议的客户端程序。报了一堆代码错误,还请大神们帮忙看下。报错如下:

D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(10) : error C2239: unexpected token '{' following declaration of 'struct_SYS_INFO'
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(14) : error C2501: 'SYS_INFO' : missing storage-class or type specifiers
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(14) : error C2501: 'PSYS_INFO' : missing storage-class or type specifiers
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(16) : error C2146: syntax error : missing ')' before identifier 'SysInfo'
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(16) : error C2182: 'ShowSysInfo' : illegal use of type 'void'
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(16) : error C2440: 'initializing' : cannot convert from 'int *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(16) : error C2059: syntax error : ')'
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(17) : error C2143: syntax error : missing ';' before '{'
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(17) : error C2447: missing function header (old-style formal list?)
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(71) : error C2146: syntax error : missing ';' before identifier 'SysInfo'
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(71) : error C2065: 'SysInfo' : undeclared identifier
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(71) : error C2440: '=' : cannot convert from 'int *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
D:\Microsoft Visual Studio\MyProjects\NEWClient\cc.cpp(71) : error C2146: syntax error : missing ';' before identifier 'Buff'




程序如下:

#include<winsock2.h>
#include<stdio.h>
#include<conio.h>

#pragma comment (lib,"ws2_32")

#define NAME_LEN 20

typedef struct_SYS_INFO
{
OSVERSIONINFO OsVer;
char szComputerName[NAME_LEN];
char szUserName[NAME_LEN];
}SYS_INFO,*PSYS_INFO;

VOID ShowSysInfo(PSYS_INFO SysInfo)
{
if (SysInfo->OsVer.dwPlatformID==VER_PLATFORM_WIN32_NT)
{
if(SysInfo->OsVer.dwMajorVersion == 5&&SysInfo->OsVer.dwMinorVersion==1)
{
print("windws XP %S \r\n", SysInfo->OsVer.szCSDVersion);
}
else if (SysInfo-> OsVer.dwMajorVersion == 5&&SysInfo->OsVer.dwMinorVersion==0)
{
printf("windows 2k \r\n");
}
}
else 
{
printf("Ohter System \r\n");
}
printf("Computer Name is %s \r\n",SysInfo->szComputerName);
printf("User Name is %s \r\n",SysInfo->szUserName);


}
int main(int argc, char*argv[])
{
WSADATA wsaData;
    WSAStartup(MAKEWORD(2,2),&wsaData);

SOCKET ClientSock = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);

sockaddr_in ServerAddr;
ServerAddr.sin_family = PF_INET;
ServerAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
ServerAddr.sin_port = htons(827);

connect(ClientSock, (SOCKADDR*)&ServerAddr,sizeof(SOCKADDR));

while (TRUE)
{
char Buff[MAXBYTE] = {0};
char Cmd[MAXBYTE] = {0};

recv(ClientSock,Buff,MAXBYTE,0);
printf("%s",Buff);

scanf("%s",Cmd);
send(ClientSock,Cmd,MAXBYTE,0);
if(!strcmp(Cmd,"exit"))
{
printf("Login out ! \r\n");
break;
}

memset(Buff,0,MAXBYTE);
recv(ClientSock,Buff,MAXBYTE,0);

if (!strcmp(Cmd,"getsysinfo"))
{
PSYS_INFO SysInfo = (PSYS_INFO)Buff;
ShowSysInfo(SysInfo);
}
else
{
printf("%s \r\n",Buff);
}
}
getch();
WSACleanup();
return 0;
}

多谢大家,费心了~~
[解决办法]
typedef struct_SYS_INFO 加一个空格改为 typedef struct _SYS_INFO
VOID ShowSysInfo(PSYS_INFO SysInfo) 中VOID有没有#define过?如果没有改为void。

后面的自己调调看。

热点排行