msg_161.c revision 1.2
11.2Srillig/* $NetBSD: msg_161.c,v 1.2 2021/01/31 12:29:16 rillig Exp $ */ 21.1Srillig# 3 "msg_161.c" 31.1Srillig 41.1Srillig// Test for message: constant in conditional context [161] 51.1Srillig 61.2Srillig/* lint1-extra-flags: -h */ 71.2Srillig 81.2Srilligvoid 91.2Srilligwhile_1(void) 101.2Srillig{ 111.2Srillig while (1) 121.2Srillig continue; 131.2Srillig} 141.2Srillig 151.2Srilligvoid 161.2Srilligwhile_0(void) 171.2Srillig{ 181.2Srillig while (0) 191.2Srillig continue; 201.2Srillig} 211.2Srillig 221.2Srillig/* 231.2Srillig * The pattern 'do { } while (0)' is a common technique to define a 241.2Srillig * preprocessor macro that behaves like a single statement. There is 251.2Srillig * nothing unusual or surprising about the constant condition. 261.2Srillig * Still, lint warns about it. FIXME don't. 271.2Srillig */ 281.2Srilligvoid 291.2Srilligdo_while_0(void) 301.2Srillig{ 311.2Srillig do { 321.2Srillig 331.2Srillig } while (0); 341.2Srillig} 351.2Srillig 361.2Srilligvoid 371.2Srilligdo_while_1(void) 381.2Srillig{ 391.2Srillig do { 401.2Srillig 411.2Srillig } while (1); 421.2Srillig} 43