1 /* C99 6.10.8 para 4: None of [the predefined macro names] shall be 2 the subject of a #define or an #undef preprocessing directive. */ 3 4 /* { dg-do preprocess } */ 5 6 #undef __DATE__ /* { dg-warning "-:undefining \"__DATE__\"" } */ 7 #undef __TIME__ /* { dg-warning "-:undefining \"__TIME__\"" } */ 8 #undef __FILE__ /* { dg-warning "-:undefining \"__FILE__\"" } */ 9 #undef __LINE__ /* { dg-warning "undefining \"__LINE__\"" } */ 10 #undef __STDC__ /* { dg-warning "undefining \"__STDC__\"" } */ 11 12 /* These should be protected from #undef, but aren't, because they 13 are set with normal #define commands - and on top of that, some 14 of them are library properties, outside our control. To consider: 15 warn about undefining/redefining any identifier beginning with 16 __STDC_ . 17 18 __STDC_HOSTED__ 19 __STDC_VERSION__ 20 __STDC_IEC_559__ 21 __STDC_IEC_559_COMPLEX__ 22 __STDC_ISO_10646__ 23 */ 24