2012-06-06 23 views
7

आरंभ करना मैं कुछ स्टेटिक विश्लेषण दोषों के माध्यम से काम कर रहा हूं और जो मुझे कोई समस्या पैदा कर रहा है वह यह है।सी ++ - SOCKADDR_IN

SOCKADDR_IN m_stLclAddr; 

SOCKADDR_IN is a member of the WinSock API

दोष कह रहा है कि मैं निम्नलिखित आरंभ नहीं किया है:

  • m_stLclAddr.sin_port
  • m_stLclAddr.sin_zero
  • m_stLclAddr.sin_addr
  • m_stLclAddr। sin_family

मैं बहुत परिचित Winsock API से परिचित नहीं हूँ, लेकिन मैं अनुसंधान के एक बिट किया है और मैं सिर्फ यह जानना चाहते हैं निम्न कोड पंक्ति डिफ़ॉल्ट मान ?:

m_stLclAddr = { 0 }; 

उत्तर

4

m_stLclAddr = {0} पहली बार (जरूरी मान या क्या आप वास्तव में क्या करना चाहते हैं डिफ़ॉल्ट नहीं) शून्य सब कुछ सेट हो जाएगा। memset(&m_stLclAddr, 0, sizeof(SOCKADDR_IN)); न केवल प्रारंभिकरण के लिए m_stLclAddr में शून्य सेट करेगा, लेकिन लगातार कॉल भी।

मुझे लगता है कि अगर आप इस तरह कुछ करना चाहता हूँ होगा: जैसा कि यहाँ दिखाया

local_sin.sin_family = AF_INET; 
local_sin.sin_port = htons (PORTNUM); 
local_sin.sin_addr.s_addr = htonl (INADDR_ANY); 

: http://msdn.microsoft.com/en-us/library/aa454002.aspx

+1

m_stLclAddr = {0} शून्य करने के लिए पहले चार सेट और फिर बाकी के द्वारा शून्य हो जाएगा ऑटो, m_stLclAddr = {} सभी को शून्य पर सेट कर देगा। –

1

साथ m_stLclAddr प्रारंभ होगा चाहते हैं हाँ, {0} का उपयोग करने के m_stLclAddr intialize होगा सब शून्य के