我正在写一些C++代码,错误地省略了函数的名称WSASocket.但是,我的编译器没有引发错误并将我SOCKET与整数值1而不是有效的套接字相关联.
有问题的代码应该是这样的:
this->listener = WSASocket(address->ai_family, address->ai_socktype, address->ai_protocol, NULL, NULL, WSA_FLAG_OVERLAPPED);
Run Code Online (Sandbox Code Playgroud)
但相反,它看起来像这样:
this->listener = (address->ai_family, address->ai_socktype, address->ai_protocol, NULL, NULL, WSA_FLAG_OVERLAPPED);
Run Code Online (Sandbox Code Playgroud)
来自其他语言,这看起来可能是某种匿名类型.该功能的名称是什么,如果它真的是一个功能?
它的目的是什么?
当你不知道从哪里开始时,很难搜索它.
R. *_*des 151
逗号运算符†评估左侧,丢弃其值,结果产生右侧.WSA_FLAG_OVERLAPPED是1,这是表达的结果; 所有其他值都被丢弃.没有创建套接字.
†除非超载.是的,它可以超载.不,你不应该超载它.现在就远离键盘!
Bat*_*eba 22
该逗号操作符是使你的代码感.
您正在有效地设置this->listener = WSA_FLAG_OVERLAPPED;恰好在语法上有效的.