/* 范例9-5 */#include file_a.cppint b1; /* 全局自动初值0 */void pp(void){extern int a;extern int c;int b3;extern int varb_file_b; /* 定义于file_b,于file_a有include */printf(a%d varb_file_b%d\n,a,varb_file_b);{extern int b1; /* 直接找文件全局 */extern int b; /* 定义于file_a.cpp中已被展开 */printf(b1%d b%d\n,b1,b);{extern int c;::b1; /* 全局b1b11 (C的运算符) *//* ::c; */ /* error! 变量c 未定义 */printf(c%d b1%d\n,c,b1);}}printf(重新声明为extern的c%d\n,c);}/* int a1; */ /* error! 造成重复定义(已在file_a.cpp中定义过) */int c789;int main(void){extern int a; /* 重新声明file_a.cpp内变量a */a;extern int a; /* 即使同一生命范围也可以重新声明 */static int b3;printf(a%d b%d\n,a,b); /* 输出为外部文件的变量a */pp();{int a33;printf(%d\n,a); /* 局部a产生屏蔽效应此时看不到外部变量a */{static int b; /* b0 */extern int a;a; /* a 定义于file_a.cpp */printf(%d %d\n,a,b);}}printf(未重新声明为extern的c%d\n,c);getchar();return 0;}程序执行结果a6 b3a6 varb_file_b123b10 b10c789 b11有重新声明为extern的c790337 0未重新声明为extern的c791