//file error.h
#define FAIL(message) \
do { \
std::ostringstream ossMsg; \
ossMsg << message; \
THROW_EXCEPTION(ossMsg.str());\
} while (false)
//main.cpp
...
FAIL("invalid parameters"); // <<< warning C4127: conditional expression is constant
...
如您所见,警告与do {} while(false)
.
我只能想出以下方法来禁用警告:
#pragma warning( push )
#pragma warning( disable : 4127 )
FAIL("invalid parameters");
#pragma warning( pop )
但我不喜欢这个解决方案。
我还尝试将这些宏放入 error.h 中而没有效果。
关于如何以体面的方式抑制此警告的任何评论?
谢谢