ORCA-C/Tests/Spec.Conform/SPC4.4.1.1.CC

63 lines
2.0 KiB
C++

/* 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;
}