gpt4 book ai didi

C 和异常

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:01 24 4
gpt4 key购买 nike

在我的 OpenCL 代码的主机部分,我有一堆

  ret = clEnqueueWriteBuffer(command_queue, ...
ret = clEnqueueWriteBuffer(command_queue, ...
ret = clEnqueueWriteBuffer(command_queue, ...
...

而不是每次都做

  if (ret != CL_SUCCESS)
{
printf("Error: Failed to write to source array!\n");
exit(1);
}

我想知道是否有某种方式可以等待一个“ret”不成功退出。

我知道(只是知道,从未使用过)signal()raise() 函数,但我不确定我是否可以使用它们在这里。

最佳答案

最好的方法是保持简单,在每次调用后使用自定义错误消息粘贴“if”语句。听起来很多,但看看“try/catch” block 需要的代码量。

“信号”用于处理硬件警报和进程间通信。使用它们来伪造异常会将您带入一个充满痛苦和苦难的世界。

鉴于“try/catch”只是一个伪装得很重的“goto”,您可以尝试:

  ret = clEnqueueWriteBuffer(command_queue, ...
if (ret) goto catcher;
ret = clEnqueueWriteBuffer(command_queue, ...
if (ret) goto catcher;
ret = clEnqueueWriteBuffer(command_queue, ...
if (ret) goto catcher;
goto finalizer;
catcher:
printf("Error: Failed to write to source array!\n");
exit(1);
}
finalizer:
..........

关于C 和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18626333/

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