/* Special Conformance Test 4.4.1.1: Verification of ability to omit either */ /* type specifier or storage class in */ /* declarations, and both in function */ /* definitions (C89/C90 only) */ /* */ /* Other files needed: spc4411.exec - separately compiles, links, and */ /* executes the files spc4.4.1.1.cc and */ /* spc4411.1.cc */ /* */ int printf(const char *, ...); static x; /* type of x is int */ float y; /* storage class of y is extern */ static F1 (); /* non-prototyped form: returns int */ double G1 (); /* also non-prototyped form: storage */ /* class is extern */ main () { x = 0x7f << 2; /* if type is not int, error would be */ if (x != 0x1FC) /* flagged */ goto Fail1; y = 8.7; y = G1 (x); if (y != 508.0) goto Fail2; x = F1 (3, 4); if (x != 7) goto Fail; printf ("Passed Special Conformance Test 4.4.1.1\n"); return; Fail: printf ("Failed Special Conformance Test 4.4.1.1\n"); return; Fail1: printf ("extern int x not set correctly: x = %d\n", x); goto Fail; Fail2: printf ("extern double function G1 returns incorrect value: y = %f\n", y); goto Fail; Fail3: printf ("static int function F1 returns incorrect value: x = %d\n", x); goto Fail; } /******************************************************************************/ F1 (x, y) int x; int y; { return x + y; }