gpt4 book ai didi

C++ ,这个 goto 语句是否有保证?

转载 作者:可可西里 更新时间:2023-11-01 16:24:15 26 4
gpt4 key购买 nike

我稍微更改了标题,因为我认为这是更合适的问题。

你会重构它吗(看起来像 goto 的合法使用)?如果,您将如何重构以下代码以删除 go to 语句?

if (data.device) {
try {
...
}
catch(const std::exception&) { goto done; }
... // more things which should not be caught
done: ;
}

完整的陈述

#ifdef HAVE_GPU
// attempt to use GPU device
if (data.device) {
try {
Integral::Gpu eri(S, R, Q, block.shell());
eri(basis.centers(), quartets, data.device);
}
// if GPU fails, propagate to cpu
catch(std::exception) { goto done; }
data.device += size;
host_index.extend(block_index);
block_index.data.clear();
done: ;
}
#endif

谢谢

在看到大多数人的偏好之后,我决定使用 flag,但有 York 先生的评论。

谢谢大家

最佳答案

if (data.device)
{
bool status = true;

try
{
...
}
catch(std::exception)
{
status = false;
}

if (status)
{
... // more things which should not be caught
}
}

关于C++ ,这个 goto 语句是否有保证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3345994/

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