如果有编译器报告未定义,那是不符合标准的编译器
ISO标准2003 $3.3.1/1 专门就有带例子的表述
The point of declaration for a name is immediately after its complete declarator (clause 8) and before its initializer (if any), except as noted below. [Example:
int x = 12;
{ int x = x; }
Here the second x is initialized with its own (indeterminate) value. ]