typedef signed t; typedef int plain; struct tag { unsigned t:4; // t is the name of the field const t:5; // t is the name of the type of the unnamed 5-bit field plain r:5; }; struct tag2 { int xx:8; int :8; // a field with no name int :8; // a field with no name int yy:8; }; typedef int a, (*b)(a intarg); // ^ ^----------------------------------------|-------| // (1) where does it say in the std that this name becomes a type name // even before the end of the typedef declarator list that is a part of? // (2) where in the std does is say how the scope of typedef names is // handled (global, function-level, block-level, etc.)? // (3) what are the exact rules about typedef scopes, and the different // contexts in which a typedef can occur that causes it to have non-local // or non-global scope? // (4) printTree to show the real AST in addition to outputNode which prints // source code. int c(int x) { return x; } b e = c; unsigned x; unsigned long int y;