我想应用某种标志设置的nvcc编译指示,例如关闭noreturn_function_does_return
类型的警告-但仅针对我的某些功能。
现在,在this answer here on SO中,它说我应该能够写:
#pragma push
#pragma diag_suppress = noreturn_function_does_return
...
#pragma pop
这确实可以解决我的问题;除了推和弹出功能不起作用外:我收到有关这两个编译指示被忽略的警告。另外,我无法弄清楚这将如何影响其他警告标记(因为我猜它是=
而不是+=
)
那么,有没有一种实际的推送和弹出方式?或者至少-抑制然后取消抑制某个警告?
注意:我在Devuan ASCII(〜= Debian Stretch)系统上使用CUDA 9.2.88 nvcc和gcc 6.3.0。
答案 0 :(得分:1)
无需赘述,并且使用最新版本的CUDA(9.2.88、10.x和更高版本)-这应该可以解决问题:
#pragma diag_suppress = noreturn_function_does_return
... your code here ...
#pragma diag_default = noreturn_function_does_return
有关详细信息,请查看最初链接到的the answer问题,该问题已更新...