J'ai programmé une simple application WinSock dans Visual Studio 2010. J'ai nommé le point d'entrée de mon application "main.c", puis je suis tombé sur cette erreur en déclarant un objet SOCKET :
error C2275: 'SOCKET' : illegal use of this type as an expression
Bizarrement, j'ai résolu ce problème en renommant le fichier de code de main.c a main.cpp
Par curiosité, je voudrais savoir ce que signifie cette erreur, et quelle différence il y a eu en changeant l'extension.
Merci d'avance.
EDIT
Voici le code correspondant :
#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;
}