, sık sık görülen veUygun C önişlemci makro no-op ayıklama kaydı için
#ifdef DEBUG
#define DLOG(fmt, args...) printf("%s:%d "fmt,__FILE__,__LINE__,args)
#else
#define DLOG(fmt, args...)
#endif
gibi ama yerlerde bir dizi şey kullanmış, ben ikinci #define
#define DLOG(fmt, args...) do {} while (0)
ile değiştirilir gördük
Özellikle, this answer var ve aynı soru için this other answer yorum, sorunun
gibi bir durumda olacağını gösterir. Bununla birlikte, hızlı testim, sonuçta ortaya çıkan noktalı virgülün, koşulun içinde no-op ifadesi olarak kullanılacağını gösterir.'un biri veya diğeri ve do {} while (0)
iyidir? Öyleyse neden? Daha iyi olan başka bir şey var mı?
olası yinelenen [do {...} while (0) ne işe yarar?) (Http://stackoverflow.com/questions/257418/do-while-0-what-is-it-good -için) –