gpt4 book ai didi

C++语法问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:05:24 25 4
gpt4 key购买 nike

我正在开发一个基于 UDP 的文件共享程序。在解释问题之前,让我发布一些示例代码。

while (true) 
{
Data toRecv;
int bytesRead = recvfrom(s->_UPDsock, (char*)&toRecv, sizeof(toRecv), 0,(SOCKADDR*)&remoteAddress, &remoteAddresslength);
if(bytesRead > 0)
{
string temp(toRecv.chunk,(bytesRead-sizeof(int)));
if(!checker)
{
//total packet amount.
totalChunkAmount = toRecv.ACK;
checker = true;
}
}
}

正如您在“13”行看到的,我正在使用从 UDP 的 recvFrom 函数中获得的变量来初始化 totalChunkAmount。我只需要初始化该值一次,这就是我在 bool if() 检查中使用它的原因。初始化后,我将 bool 值翻转为 true,因此不会再次初始化。有没有其他方法可以达到相同的结果,但不使用丑陋的 bool 切换方法。

最佳答案

在初始化之前将 totalChunkAmount 设置为无效状态并检查该状态。例如,如果 totalChunkAmount 是一个 int 那么,

totalChunkAmount = -1; // say -1 is invalid value
while(true)
{
...
if(-1 == totalChunkAmount)
totalChunkAmount = toRecv.ACK; // ACK can never be -1
}

同样,如果 totalChunkAmount 是一个指针,那么您可以将它设置为 NULL (0)。

[编辑说明:我只是想知道,在您的 while 循环中,您主要是在初始化变量,那么为什么您的 break 在那之后不退出循环?如果你能这样做,它会更干净,并且不需要这样的检查。]

关于C++语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com