C语言之在多个文件中声明外部变量

98 阅读2分钟

版权声明:本文为博主原创文章,未经博主允许不得转载。blog.csdn.net/qq_42680327****

问题:

用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用。

Extern:

使用extern关键字来声明变量为外部变量。具体说就是在其中一个c文件中定义一个全局变量key,然后在另一个要使用key这个变量的c文件中使用extern关键字声明一次,说明这个变量为外部变量,是在其他的c文件中定义的全局变量。请注意我这里的用词:定义和声明。例如在01.c文件中定义变量key,在02.c文件中声明key变量为外部变量,这样这两个文件中就能共享这个变量key了。 


   
   

     
     

      
      

     
     

     
     

      
      

       
       #include <stdio.h>
      
      

     
     

     
     

      
      

     
     

     
     

      
      

       
       int A;      
       
       /*定义外部变量*/
      
      

     
     

     
     

      
      

     
     

     
     

      
      

       
       void main(){
      
      

     
     

     
     

      
      

     
     

     
     

      
      
    
       
       int power(int n);       
       
       /*函数声明*/
      
      

     
     

     
     

      
      

     
     

     
     

      
      
    
       
       int b=
       
       3,result,c,m;
      
      

     
     

     
     

      
      

     
     

     
     

      
      
    
       
       printf(
       
       "please input number A and its power m:\n");
      
      

     
     

     
     

      
      

     
     

     
     

      
      
    
       
       scanf(
       
       "%d %d",&A,&m);
      
      

     
     

     
     

      
      

     
     

     
     

      
      

       
           c=A*b;
      
      

     
     

     
     

      
      

     
     

     
     

      
      
    
       
       printf(
       
       "%d * %d =%d\n",A,b,c);
      
      

     
     

     
     

      
      

     
     

     
     

      
      

       
           result=power(m);
      
      

     
     

     
     

      
      

     
     

     
     

      
      
    
       
       printf(
       
       "%d ^ %d =%d\n",A,m,result);
      
      

     
     

     
     

      
      

     
     

     
     

      
      

       
       }
      
      

     
     

   
   

   
   

     
     

      
      

     
     

     
     

      
      

       
       extern A;
       
       /*声明A为一个已定义的外部变量*/
      
      

     
     

     
     

      
      

     
     

     
     

      
      

       
       int power(int n){
      
      

     
     

     
     

      
      

     
     

     
     

      
      
    
       
       int i,y=
       
       1;
      
      

     
     

     
     

      
      

     
     

     
     

      
      
    
       
       for(i=
       
       1;i<=n;i++){
      
      

     
     

     
     

      
      

     
     

     
     

      
      

       
               y*=A;
      
      

     
     

     
     

      
      

     
     

     
     

      
      

       
           }
      
      

     
     

     
     

      
      

     
     

     
     

      
      
    
       
       return y;
      
      

     
     

     
     

      
      

     
     

     
     

      
      

       
       }
      
      

     
     

   
   

如图所示:

其实就是变量定义变量声明的区别,变量定义使用“数据类型+变量名称”的形式,编译器需要给他分配内存单元的;而变量声明使用“extern 变量类型+变量名称”的形式,是告诉编译器我这个变量将在其他外部c文件中定义,我这里只是在外部用它。编译器就不给他分配内存空间,而等到真正遇到变量定义的时候再给他分配内存空间。

用static声明外部变量:

有时在程序设计中希望某些外部变量只限于被本文件引用,而不能被其他文件引用。这时可以在定义外部变量时加一个static声明。

在上面的程序中,我们可以看出用static声明,程序就会报错。解决方法:可以把file02.c文件放进file01.c文件中,就OK