C++ - инициализация SOCKADDR в
Я работаю через некоторые дефекты статического анализа, и один из них вызывает у меня проблему.
SOCKADDR_IN m_stLclAddr;
SOCKADDR_IN является членом winsock API
дефект говорит о том, что я не инициализировал следующее:
- m_stLclAddr.sin_port
- m_stLclAddr.sin_zero
- m_stLclAddr.sin_addr
- m_stLclAddr.значение переменной sin_family
Я не очень хорошо знаком знаком с winsock API, но я провел небольшое исследование, и я просто хочу знать, будет ли следующая строка кода инициализировать m_stLclAddr со значениями по умолчанию?:
m_stLclAddr = { 0 };
2 ответов
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