关于警告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
相关产品推荐
相关产品推荐

