J'essaie de créer un programme de socket de multidiffusion UDP à l'aide de VS2015 (application console C++).
J'ai eu l'erreur suivante,
Error C4996 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings mulitcast_listener
J'ai essayé d'ajouter le symbole _WINSOCK_DEPRECATED_NO_WARNINGS à mes paramètres de projet via "Projet" -> "Propriétés" -> "Propriétés de configuration" -> "C/C++" -> "Préprocesseur" -> "Définitions du préprocesseur" .. Mais il dit toujours le même.
Et puis j'ai essayé d'ajouter le symbole ci-dessus # include "stdafx.h" like
# définir _WINSOCK_DEPRECATED_NO_WARNINGS 1
puis Non (/ sdl -) sur "Projet" -> "Propriétés" -> "Propriétés de configuration" -> "C/C++" -> Général -> Vérifications SDL
maintenant je reçois un message d'erreur disant
Warning C4603 '_WINSOCK_DEPRECATED_NO_WARNINGS': macro is not defined or definition is different after precompiled header
Enfin, j'ai essayé de mettre en œuvre
inet_pton(AF_INET, HELLO_GROUP, (PVOID *)(&mreq.imr_multiaddr.s_addr));
au lieu de
mreq.imr_multiaddr.s_addr = inet_addr(HELLO_GROUP);
J'ai besoin de comprendre pourquoi l'erreur n'a pas été résolue même après l'ajout de la macro _WINSOCK ....
Merci d'avance.
Comme indiqué dans les commentaires, la solution consiste à s'assurer que la ligne
#define _WINSOCK_DEPRECATED_NO_WARNINGS
est placé après
#include "stdafx.h"
mais avant l'autre #include
déclarations.
Bien que les conseils précédents fonctionnent, il ignore le but de stdafx.h
. L'idée est que vous placez #include
instructions pour les fichiers d'en-tête qui ne changent pas fréquemment à l'intérieurstdafx.h
afin d'utiliser des en-têtes précompilés. Par conséquent, vous devriez idéalement placer
#define _WINSOCK_DEPCRECATED
à l'intérieur stdafx.h
, avant les autres #include
les déclarations qu'elle affecte, notamment avant d'inclure winsock2.h
ou d'autres en-têtes liés à Winsock.