| int a; |
| |
| int f() { |
| int a; |
| // Undefined variable b |
| // printf("f 0: a = %d b = %d\n", a, b); |
| printf("f 0: a = %d\n", a); |
| a = 2; |
| printf("f 1: a = %d\n", a); |
| } |
| |
| int g(int a) { |
| printf("g 0: a = %d\n", a); |
| a = 3; |
| printf("g 1: a = %d\n", a); |
| } |
| |
| int h(int a) { |
| // int a; // gcc 4.3 says error: 'a' redeclared as different kind of symbol |
| |
| printf("h 0: a = %d\n", a); |
| a = 4; |
| printf("h 1: a = %d\n", a); |
| } |
| |
| // Already defined global |
| // int h() {} |
| int globCheck() { |
| fprintf(stdout, "globCheck()\n"); |
| } |
| |
| int fwdCheck() { |
| b(); |
| // Undefined forward reference |
| // c(); |
| } |
| |
| int b() { |
| printf("b()\n"); |
| } |
| |
| int nested() { |
| int a; |
| printf("nested 0: a = %d\n", a); |
| a = 50; |
| printf("nested 1: a = %d\n", a); |
| { |
| int a; |
| printf("nested 2: a = %d\n", a); |
| a = 51; |
| printf("nested 3: a = %d\n", a); |
| } |
| printf("nested 4: a = %d\n", a); |
| } |
| |
| int main() { |
| globCheck(); |
| fwdCheck(); |
| printf("main 0: a = %d\n", a); |
| a = 5; |
| printf("main 1: a = %d\n", a); |
| f(); |
| printf("main 2: a = %d\n", a); |
| g(77); |
| printf("main 3: a = %d\n", a); |
| h(30); |
| printf("main 4: a = %d\n", a); |
| nested(); |
| printf("main 5: a = %d\n", a); |
| return 0; |
| } |