OVH Cloud OVH Cloud

Socket sous windows en C : Pb avec fct MAKEWORD

7 réponses
Avatar
Hervé Chailleux
J'utilise Borland C++ 5.02 et cette erreur m'empeche de compiler: Call to
undefined function 'MAKEWORD'
voila une petite partie de mon code: (l'essentiel je pense suivant l'erreur)

...
#include <winsock.h>
#pragma comment(lib,"wsock32.lib")

int main()
{
...
WSADATA WSAData;
WSAStartup(MAKEWORD(1,0), &WSAData);
...
}

J'ai comparé avec plusieurs codes trouvés sur le net et je ne vois vraiment
pas mon erreur
J'espere que vous pourrez m'éclairer sur la question.
Merci d'avance.

7 réponses

Avatar
Arnaud Debaene
Hervé Chailleux wrote:
J'utilise Borland C++ 5.02 et cette erreur m'empeche de compiler:
Call to undefined function 'MAKEWORD'
voila une petite partie de mon code: (l'essentiel je pense suivant
l'erreur)

...
#include <winsock.h>
#pragma comment(lib,"wsock32.lib")

int main()
{
...
WSADATA WSAData;
WSAStartup(MAKEWORD(1,0), &WSAData);
...
}

J'ai comparé avec plusieurs codes trouvés sur le net et je ne vois
vraiment pas mon erreur



Pour MAKEWORD, il faut #inclure <windows.h>, à moins qu'il y ait une
subtilité Borlandienne en plus.

Arnaud
Avatar
Hervé Chailleux
> Pour MAKEWORD, il faut #include <windows.h>, à moins qu'il y ait une
subtilité Borlandienne en plus.

Arnaud




Effectivement j'ai l'impression qu'il y a autre chose : l'erreur est tjs là.
Hervé
Avatar
Remi Thomas
Hervé Chailleux wrote:
J'utilise Borland C++ 5.02 et cette erreur m'empeche de compiler:
Call to undefined function 'MAKEWORD'
voila une petite partie de mon code: (l'essentiel je pense suivant
l'erreur)

...
#include <winsock.h>
#pragma comment(lib,"wsock32.lib")

int main()
{
...
WSADATA WSAData;
WSAStartup(MAKEWORD(1,0), &WSAData);
...
}

J'ai comparé avec plusieurs codes trouvés sur le net et je ne vois
vraiment pas mon erreur
J'espere que vous pourrez m'éclairer sur la question.
Merci d'avance.



Et en copiant la définition de la macro MAKEWORD en haut début de ton
fichier est-ce que tu as toujours l'erreur ?

Rémi

--
Rémi Thomas - MVP Visual Studio .NET
Développeur Windows indépendant
http://www.xtware.com/cv
Avatar
Thierry
Bonjour,

Remi Thomas a écrit :


Et en copiant la définition de la macro MAKEWORD en haut début de ton
fichier est-ce que tu as toujours l'erreur ?



Ben apriori il ne l'a pas :-)

typedef unsigned long ULONG_PTR, *PULONG_PTR;
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
#define MAKEWORD(a, b) ((WORD)(((BYTE)((DWORD_PTR)(a) & 0xff)) |
((WORD)((BYTE)((DWORD_PTR)(b) & 0xff))) << 8))

--
« Willy, j'ai mangé le chat. »
Avatar
adebaene
Thierry wrote in message news:...
Bonjour,

Remi Thomas a écrit :

>
> Et en copiant la définition de la macro MAKEWORD en haut début de ton
> fichier est-ce que tu as toujours l'erreur ?

Ben apriori il ne l'a pas :-)

typedef unsigned long ULONG_PTR, *PULONG_PTR;
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
#define MAKEWORD(a, b) ((WORD)(((BYTE)((DWORD_PTR)(a) & 0xff)) |
((WORD)((BYTE)((DWORD_PTR)(b) & 0xff))) << 8))



Comment est-ce qu'il peut "ne pas l'avoir" puisque cette macro est
déclarée dans windef.h sans aucun #ifdef particulier autour? La seule
explication que je vois est que l'OP a une version foireuse (ou
modifiée par Borland) des headers du Platform SDK.

Arnaud
Avatar
Hervé Chailleux
"Thierry" a écrit dans le message de news:

Bonjour,

Remi Thomas a écrit :

>
> Et en copiant la définition de la macro MAKEWORD en haut début de ton
> fichier est-ce que tu as toujours l'erreur ?

Ben apriori il ne l'a pas :-)

typedef unsigned long ULONG_PTR, *PULONG_PTR;
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
#define MAKEWORD(a, b) ((WORD)(((BYTE)((DWORD_PTR)(a) & 0xff)) |
((WORD)((BYTE)((DWORD_PTR)(b) & 0xff))) << 8))

--
« Willy, j'ai mangé le chat. »



J'ai bien rajouté cette définition
Nouvelle erreur : 'Ambiguous operators need parentheses'
=> A la ligne de : WSAStartup(MAKEWORD(1,0), &WSAData);
Avatar
Hervé Chailleux
J'ai laissé tombé avec Borland, ça marche bien sous DevCpp...

Hervé