我一直在编程Visual Studio 2010中一个简单的WinSock应用程序我有一个名为我的应用程序入口点“main.c”文件,然后我碰到这个错误而来到声明Socket对象:编译器错误C2275
error C2275: 'SOCKET' : illegal use of this type as an expression
奇怪的是,我解决了这个问题,通过重命名从main.c中代码文件main.cpp中
只是出于好奇,我想知道这是什么错误的意思,有什么区别通过更改扩展名而发生。
在此先感谢。
编辑
下面是相关代码:
#pragma comment(lib,"ws2_32")
#include <WinSock2.h>
#include <stdio.h>
int main()
{
// Startup the winsock
WORD wVersionRequested;
WSADATA wsaData;
int wsaerr;
wVersionRequested = MAKEWORD(2,2);
wsaerr = WSAStartup(wVersionRequested,&wsaData);
if(wsaerr != 0)
{
printf("Winsock2 dll is not found!\n");
WSACleanup();
return 0;
}
else
{
printf("Winsock2 dll is found!\n");
printf("Current System Status: %s.\n",wsaData.szSystemStatus);
}
//Create a SOCKET object called socketobj.
SOCKET socketobj;
socketobj = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (socketobj == INVALID_SOCKET)
{
printf("Socket Intialization Failed with error: %ld\n", WSAGetLastError());
WSACleanup();
return 0;
}
else
{
printf("Socket Intialization Success\n");
}
Sleep(10000);
return 0;
}
请发布相关的代码 – JaredPar 2012-03-03 20:19:27
您可能已尝试在块的第一条语句之后声明变量;这在C90中是不允许的。 – 2012-03-03 20:20:11
改变扩展名的区别在于'.cpp'文件被视为C++,'.c'文件被视为C. C和C++是具有不同规则的不同语言(但在很多领域非常相似,显然)。 – 2012-03-03 20:20:24