在C中声明不同类型的外部变量

时间:2014-11-27 11:16:23

标签: c pointers declaration extern

我对外部变量的声明有疑问。我正在一个已经在工作的项目中工作,就像下面一样(这是一个基于真实程序的例子):

file1.h

   #include "mystruct.h"
   extern long    a ;
   extern strc_1  s ;
   extern STRC_2  *ss;

在我的主程序中我有

的main.c

  #include "file1.h"
  long    a ;
  strc_1  s ;

  main()
  {
     a = 10;
     s.variableX = 10;
     s.variableY = 50;

     ss.J = 50;
     ss.J = 250;         
  }

所以,我的问题是:为什么不需要在主程序中声明指针's'?为什么它有效?我的意思是,变量'a'和'strc_1'是在主程序中声明的,因为我使用它们,但是,我使用's'但我没有在主程序中声明它。

1 个答案:

答案 0 :(得分:1)

long    a ;
strc_1  s ;

main.c中的这些内容称为定义,而不是声明。 (确切地说,所有定义也都是声明)。

您不必定义ss的原因是因为它在某些其他源文件中定义。只要可以看到ss(在header1.h中)的声明,它就可以正常编译。