【发布时间】:2018-11-26 20:50:09
【问题描述】:
我在网络方面的所有经验都是在 Linux 上的,所以我是 Windows 网络方面的绝对初学者。这可能是一个愚蠢的问题,但我似乎无法在任何地方找到答案。考虑以下代码 sn-p:
DWORD Index = WSAWaitForMultipleEvents(EventTotal, EventArray, FALSE, WSA_INFINITE, FALSE);
WSAResetEvent( EventArray[Index - WSA_WAIT_EVENT_0]);
每次从 EventArray 中选择事件时,都会从索引中减去 WSA_WAIT_EVENT_0,但在 winsock2.h 中将 WSA_WAIT_EVENT_0 定义为零。
为什么代码中会出现这种看似不必要的减法?显然编译器会优化它,但仍然不明白它为什么在那里。
【问题讨论】:
-
这样做是为了提高代码的清晰度和自记录性。
WSA_WAIT_EVENT_0的值当然不能更改 - 在所有版本中它始终为 0
标签: c winsock2 overlapped-io