9

重複の可能性:
C/C++: do-while(0); の使用方法 C4127 のようなコンパイラ警告なしで構築しますか?

//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 に入れようとしましたが、効果はありませんでした。

この警告を適切な方法で抑制する方法について何かコメントはありますか?

ありがとうございました

4

2 に答える 2