ド/while(0)c 4127

2633 ワード

リンク:http://cnicholson.net/2009/03/stupid-c-tricks-dowhile0-and-c4127/
// NOISY CODE  

#define MULTI_LINE_MACRO(VALUE) do {    \

        printf("Hello "); \

        printf("world!
"); \ } while (VALUE) int main() { MULTI_LINE_MACRO(0); return 0; }
image
𔽣pragma warning(disable:4127)
この文を追加すると、ファイルの変更を含めてdisableになります.
こうしたほうがいいです
#define MULTI_LINE_MACRO(VALUE) do {    \

        printf("Hello "); \

        printf("world!
"); \ __pragma(warning(push))\ __pragma(warning(disable:4127))\ } while (VALUE)\ __pragma(warning(pop))
この数行だけがdisbaleです.
はい、_ですpragramは〓programではなくて、〓programはこのように使うことができなくて、マクロの定義の中で譲ることができません;