2012-06-06 27 views
7

Bazı Statik Analiz kusurları üzerinde çalışıyorum ve bu bana bir soruna neden oluyor. C++ - Sıfırlama SOCKADDR_IN

SOCKADDR_IN m_stLclAddr; 

SOCKADDR_IN is a member of the WinSock API

kusur Aşağıdaki başlatılmadı olduğunu söylüyor:

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

Ben WinSock API aşina çok aşina değilim ama biraz araştırma yaptık ve ben sadece aşağıdaki kod satırı varsayılan değerler ?:

m_stLclAddr = { 0 }; 

cevap

4

m_stLclAddr = {0}. memset(&m_stLclAddr, 0, sizeof(SOCKADDR_IN));, m_stLclAddr'deki her şeyi yalnızca başlatmayı değil, aynı zamanda ardışık çağrıları da sıfırlayacak. burada gösterildiği gibi

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

: Ben böyle bir şey yapmak ister ki düşünürdüm

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

+1

m_stLclAddr = {0} sıfıra ilk kömürü ayarlar ve sonra da geri kalan göre sıfır olacak auto, m_stLclAddr = {} tümü sıfıra ayarlayacaktır. –

1

ile m_stLclAddr başlatmak olacağını bilmek istiyorum Evet, {0} kullanarak m_stLclAddr başlatılamadığı olacak (ille değerleri veya ne aslında yapmak istediğim varsayılan değil) ilk kez sıfır şeyi ayarlayacaktır tamamı sıfır en