You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于警告C4702(不可达代码)及CUDA初始化函数的问题咨询

关于警告C4702(不可达代码)及CUDA初始化函数的问题咨询

各位大佬好,我最近在写一个CUDA初始化的函数,编译的时候碰到了C4702(不可达代码)的警告,折腾半天没搞明白问题出在哪,想请大家帮忙看看。

先贴一下我的代码片段:

int cuda_device_count = 0;
bool cuda_enabled = true;
char devname[256];
// logger_spd 是带文件输出的 spdlog::logger 实例

void InitCuda()
{
    // 这个函数返回0表示没有支持CUDA的设备
    cudaError_t cr = cudaGetDeviceCount(&cuda_device_count);

    if (cr != cudaSuccess)
    {
        std::string msg = std::string("[InitCuda] Failed retrieve number of CUDA devices: ") + std::string(cudaGetErrorString(cr));
        throw std::exception(msg.c_str());
    }

    if (cuda_device_count == 0)
    {
        cuda_enabled = false;
        logger_spd->warn("CUDA device not found. Disabling CUDA processing");
        return;
    }
    else
    {
        std::string msg = "Found " + std::to_string(cuda_device_count) + " CUDA capable device(s)";
        logger_spd->info(msg);
    }

    // 获取CUDA设备属性
    cudaDeviceProp deviceProp;

    for (int dev_idx = 0; dev_idx < cuda_device_count; dev_idx++)
    {
        cudaGetDeviceProperties(&deviceProp, dev_idx);
        // ...原本还有设备名称等属性的处理逻辑
    }
}

我的疑问是:当cuda_device_count == 0的时候,我已经调用return退出函数了,理论上后面的获取设备属性的代码应该不会被执行到才对,但编译器还是报了C4702不可达代码的警告。我反复检查了逻辑,感觉没什么问题啊,有没有人能帮我分析下原因?或者有没有什么写法可以避免这个警告?

备注:内容来源于stack exchange,提问作者rbaleksandar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:17:58