CUDA:NVCC给出控制表达式是断言的持续警告

Any*_*orn 6 c++ compiler-construction warnings nvcc

controlling expression is constant在assert语句中收到警告,如下所示:

assert(... && "error message");
Run Code Online (Sandbox Code Playgroud)

为什么这个警告就这个断言?我怎么能压制这个警告?

NVCC是NVIDIA cuda编译器,我认为它基于LLVM.当GCC或Visual C++编译器编译好时,为什么会发出此警告?

Geo*_*che 3

一个可移植的替代方案(可能包含在宏中)将类似于:

 {
     const bool error_message = true;
     assert([...] && error_message);
 }
Run Code Online (Sandbox Code Playgroud)

为了澄清我的意思:

#define myAssert(msg, exp) { const bool msg(true); assert(msg && (exp)); }
// usage:
myAssert(ouch, a && b);
Run Code Online (Sandbox Code Playgroud)

...给出例如:

断言“ouch && (a && b)”失败 [...]