⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9-5.txt

📁 C++完美演绎源代码
💻 TXT
字号:
/* 范例:9-5 */
#include "file_a.cpp"
int b1;            	/* 全局自动初值0 */
void pp(void)
{
  extern int a;
  extern int c;
  int b=3;
  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++;		/* 全局b1=b1+1 (C++的运算符) */
      /* ::c++; */  	/* error! 变量c 未定义 */
      printf("c=%d b1=%d\n",c,b1);
    }
  }
  printf("重新声明为extern的c=%d\n",++c);
}

/* int a=1; */  /* error! 造成重复定义(已在file_a.cpp中定义过) */
int c=789;

int main(void)
{
  extern int a;   				/* 重新声明file_a.cpp内变量a */
  a++;
  extern int a;   				/* 即使同一生命范围,也可以重新声明 */
  static int b=3;
  printf("a=%d b=%d\n",a,b);	/* 输出为外部文件的变量a */

  pp();

  {
    int a=33;
    printf("%d\n",a);	/* 局部a产生屏蔽效应,此时看不到外部变量a */
    {
      static int b;	/* b=0 */
      extern int a;
      a++;	/* a 定义于file_a.cpp */
      printf("%d %d\n",a,b);
    }
  }
  printf("未重新声明为extern的c=%d\n",++c);

  getchar();
  return 0;
}

程序执行结果:
a=6 b=3
a=6 varb_file_b=123
b1=0 b=10
c=789 b1=1
有重新声明为extern的c=790
33
7 0
未重新声明为extern的c=791

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -