mirror of
https://github.com/byteworksinc/ORCA-C.git
synced 2024-11-17 05:06:10 +00:00
91d33b586d
The main changes made to most tests are: *Declarations always include explicit types, not relying on implicit int. The declaration of main in most test programs is changed to be "int main (void) {...}", adding an explicit return type and a prototype. (There are still some non-prototyped functions, though.) *Functions are always declared before use, either by including a header or by providing a declaration for the specific function. The latter approach is usually used for printf, to avoid requiring ORCA/C to process stdio.h when compiling every test case (which might make test runs noticeably slower). *Make all return statements in non-void functions (e.g. main) return a value. *Avoid some instances of undefined behavior and type errors in printf and scanf calls. Several miscellaneous bugs are also fixed. There are still a couple test cases that intentionally rely on the C89 behavior, to ensure it still works.
69 lines
1.7 KiB
C++
69 lines
1.7 KiB
C++
/* Conformance Test 4.6.4.2: Verify that subscripts work */
|
|
/* properly in initializers. */
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
char str1[] = "Hello, ";
|
|
char str2[] = "*world.";
|
|
|
|
char *str[] = {&str1[0], &str2[1]};
|
|
|
|
int tensor[3][3][3] = {0,1,2,3,4,5,6,7,8,
|
|
9,10,11,12,13,14,15,16,17,
|
|
18,19,20,21,22,23,24,25,26};
|
|
|
|
int *ip[27] = {
|
|
&tensor[0][0][0],
|
|
&tensor[0][0][1],
|
|
&tensor[0][0][2],
|
|
&tensor[0][1][0],
|
|
&tensor[0][1][1],
|
|
&tensor[0][1][2],
|
|
&tensor[0][2][0],
|
|
&tensor[0][2][1],
|
|
&tensor[0][2][2],
|
|
&tensor[1][0][0],
|
|
&tensor[1][0][1],
|
|
&tensor[1][0][2],
|
|
&tensor[1][1][0],
|
|
&tensor[1][1][1],
|
|
&tensor[1][1][2],
|
|
&tensor[1][2][0],
|
|
&tensor[1][2][1],
|
|
&tensor[1][2][2],
|
|
&tensor[2][0][0],
|
|
&tensor[2][0][1],
|
|
&tensor[2][0][2],
|
|
&tensor[2][1][0],
|
|
&tensor[2][1][1],
|
|
&tensor[2][1][2],
|
|
&tensor[2][2][0],
|
|
&tensor[2][2][1],
|
|
&tensor[2][2][2]
|
|
};
|
|
|
|
int main(void)
|
|
|
|
{
|
|
int i;
|
|
char st1[20],st2[20];
|
|
int fail = 0;
|
|
|
|
strcpy(st1, str[0]);
|
|
strcat(st1, str[1]);
|
|
strcpy(st2, &str1[0]);
|
|
strcat(st2, &str2[1]);
|
|
if (strcmp(st1,st2) != 0)
|
|
fail = 1;
|
|
|
|
for (i = 0; i < 27; ++i)
|
|
if (*ip[i] != i)
|
|
fail = 1;
|
|
|
|
if (fail)
|
|
printf ("Failed Conformance Test 4.6.4.3\n");
|
|
else
|
|
printf ("Passed Conformance Test 4.6.4.3\n");
|
|
}
|