2015-08-26 7 views
6

मैं वीएस2015 (सी ++ कंसोल एप्लिकेशन) का उपयोग कर यूडीपी मल्टीकास्ट सॉकेट प्रोग्राम बनाने की कोशिश कर रहा हूं। > "गुण" - -> "विन्यास गुण" -> "C/C++"विंसॉक ने कोई चेतावनी नहीं छोड़ी

मैं निम्नलिखित त्रुटि मिली,

Error C4996 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings mulitcast_listener 

मैं "परियोजना" के माध्यम से अपने प्रोजेक्ट सेटिंग्स में जोड़ने के लिए _WINSOCK_DEPRECATED_NO_WARNINGS प्रतीक कोशिश की - > "प्रीप्रोसेसर" -> "प्रीप्रोसेसर परिभाषाएं" .. लेकिन फिर भी यह वही कहता है।

और फिर मैं तो नहीं (/ sdl-) पर "परियोजना # शामिल ऊपर प्रतीक जोड़ने के लिए" stdafx.h "

तरह

#define _WINSOCK_DEPRECATED_NO_WARNINGS 1

की कोशिश की और "->" गुण "->" विन्यास गुण "->" सी/सी ++ "-> सामान्य-> एसडीएल

अब मुझे एक त्रुटि संदेश मिलता है जो

कहता है 210
Warning C4603 '_WINSOCK_DEPRECATED_NO_WARNINGS': macro is not defined or definition is different after precompiled header 

अंत में मैं लागू करने के लिए

mreq.imr_multiaddr.s_addr = inet_addr(HELLO_GROUP); 

के बजाय

inet_pton(AF_INET, HELLO_GROUP, (PVOID *)(&mreq.imr_multiaddr.s_addr)); 

की कोशिश की मैं समझने की जरूरत क्यों त्रुटि का समाधान नहीं पड़ता है, _WINSOCK जोड़ने के बाद ... मैक्रो।

अग्रिम धन्यवाद।

+1

'stdafx.h' से पहले '# परिभाषित' जोड़ने के संबंध में आपको इसके बारे में पता नहीं हो सकता है: https://en.wikipedia.org/wiki/Precompiled_header#stdafx.h। '# शामिल" stdafx.h "' पहली बात होनी चाहिए। यदि आप stdafx को शामिल करने के बाद सही '# परिभाषित' रखते हैं तो क्या होता है लेकिन अन्य सभी में शामिल होने से पहले क्या होता है? –

+0

यह सफलतापूर्वक निर्माण करता है .. इस जानकारी के लिए आपको बहुत धन्यवाद – kar

उत्तर

7

टिप्पणी में बताया गया है, समाधान सुनिश्चित करें कि लाइन

#define _WINSOCK_DEPRECATED_NO_WARNINGS 

#include "stdafx.h" 

के बाद, लेकिन अन्य #include बयान से पहले रखा जाता बनाना है।

+1

यह मेरे लिए काम करता है। – nomnom

1

पिछली सलाह काम करता है, यह stdafx.h के उद्देश्य को अनदेखा कर रहा है। विचार यह है कि आप हेडर फाइलों के लिए #include स्टेटमेंट्स डालते हैं जो प्रीकंपील्ड हेडर का उपयोग करने के लिए stdafx.h के अंदर अक्सर नहीं बदलते हैं। इसलिए आप आदर्श रूप से देना चाहिए

#define _WINSOCK_DEPCRECATED 
stdafx.h अंदर

, अन्य #include बयान से पहले यह winsock2.h या अन्य विनसॉक संबंधित हेडर से पहले विशेष रूप से, प्रभावित करता है।

संबंधित मुद्दे