首页 > 代码库 > do/while(0) c4127

do/while(0) c4127

原文链接:http://cnicholson.net/2009/03/stupid-c-tricks-dowhile0-and-c4127/

// NOISY CODE  #define MULTI_LINE_MACRO(VALUE) do {    \        printf("Hello ");         printf("world!\n");         } while (VALUE)int main(){    MULTI_LINE_MACRO(0);    return 0;}
技术分享

#pragma warning(disable:4127)

如果添加这句,那么包含改文件的都会被disable

最好是这样

#define MULTI_LINE_MACRO(VALUE) do {    \        printf("Hello ");         printf("world!\n");         __pragma(warning(push))        __pragma(warning(disable:4127))        } while (VALUE)        __pragma(warning(pop))

只有这几行是disbale的

是__pragram而不是#program,#program不能这样用,不能让在宏定义里;

do/while(0) c4127