/* Conformance Test 3.3.5.1:  Verification of undefining/redefining macros */

int printf(const char *, ...);

#undef     macroNotDefinedYet          /* not an error to undefine an */
                                       /*   undefined macro           */
#define    macroNotDefinedYet  8
#define    macroNotDefinedYet  8       /* allow only "benign" redefinition */
#undef     macroNotDefinedYet          /*   without intervening #undef     */
#define    macroNotDefinedYet  23      /* allow infinite undefining and    */
                                       /*   redefining                     */
#define    A23__BD8            "These are the days"
#undef     A23__BD8
#define    A23__BD8            27.3e5
#undef     A23__BD8
#define    A23__BD8            "Passed Conformance Test 3.3.5.1\n"

int main (void)
  {
   if (macroNotDefinedYet != 23)
       goto Fail;

   printf (A23__BD8);
   return 0;

Fail:
   printf ("Failed Conformance Test 3.3.5.1\n");
  }
