我对外部变量的声明有疑问。我正在一个已经在工作的项目中工作,就像下面一样(这是一个基于真实程序的例子):
#include "mystruct.h"
extern long a ;
extern strc_1 s ;
extern STRC_2 *ss;
在我的主程序中我有
#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'但我没有在主程序中声明它。
答案 0 :(得分:1)
long a ;
strc_1 s ;
main.c
中的这些内容称为定义,而不是声明。 (确切地说,所有定义也都是声明)。
您不必定义ss
的原因是因为它在某些其他源文件中定义。只要可以看到ss
(在header1.h
中)的声明,它就可以正常编译。