1 int a; 2 3 int f() { 4 int a; 5 // Undefined variable b 6 // printf("f 0: a = %d b = %d\n", a, b); 7 printf("f 0: a = %d\n", a); 8 a = 2; 9 printf("f 1: a = %d\n", a); 10 } 11 12 int g(int a) { 13 printf("g 0: a = %d\n", a); 14 a = 3; 15 printf("g 1: a = %d\n", a); 16 } 17 18 int h(int a) { 19 // int a; // gcc 4.3 says error: 'a' redeclared as different kind of symbol 20 21 printf("h 0: a = %d\n", a); 22 a = 4; 23 printf("h 1: a = %d\n", a); 24 } 25 26 // Already defined global 27 // int h() {} 28 int globCheck() { 29 fprintf(stdout, "globCheck()\n"); 30 } 31 32 int fwdCheck() { 33 b(); 34 // Undefined forward reference 35 // c(); 36 } 37 38 int b() { 39 printf("b()\n"); 40 } 41 42 int nested() { 43 int a; 44 printf("nested 0: a = %d\n", a); 45 a = 50; 46 printf("nested 1: a = %d\n", a); 47 { 48 int a; 49 printf("nested 2: a = %d\n", a); 50 a = 51; 51 printf("nested 3: a = %d\n", a); 52 } 53 printf("nested 4: a = %d\n", a); 54 } 55 56 int main() { 57 globCheck(); 58 fwdCheck(); 59 printf("main 0: a = %d\n", a); 60 a = 5; 61 printf("main 1: a = %d\n", a); 62 f(); 63 printf("main 2: a = %d\n", a); 64 g(77); 65 printf("main 3: a = %d\n", a); 66 h(30); 67 printf("main 4: a = %d\n", a); 68 nested(); 69 printf("main 5: a = %d\n", a); 70 return 0; 71 } 72