澄清以理解C变量

ab *_* bc 9 c

我是一个新手并试图理解C中的程序.在程序中,有一个头文件typedef.h声明typedef struct { int i; char b;} rdi;

然后有3个文件夹,每个文件夹有几个执行特定任务的程序,每个文件夹都有一个头文件.在它拥有的每3个文件夹的头文件中

#include typfedef.h 
Run Code Online (Sandbox Code Playgroud)

然后宣布

extern rdi *rdi_x;
Run Code Online (Sandbox Code Playgroud)

在所有3个文件夹中,它都做到了.但是我没有在程序定义的任何地方看到它:

  rdi rdi_x;
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否不需要rdi rdi_x;在程序中定义.

正如我从c教科书中所理解的那样,程序中的某个地方需要定义rdi rdi_x;或者我的理解并不好.

R S*_*ahu 10

正如我从c教科书中所理解的那样,程序中的某个地方需要定义rdi rdi_x;或者我的理解并不好.

rdi_x只需要定义它是否被使用.只是声明变量不需要定义它.

更简单的一个.c文件的情况:

无法构建的程序:

extern int i;
extern int j;
extern int k;

int main()
{
   k = 10;
}
Run Code Online (Sandbox Code Playgroud)

k使用以来,该程序将无法构建.如果我们提供just的定义k,它将构建得很好.

成功构建的程序:

extern int i;
extern int j;
extern int k;

int main()
{
   k = 10;
}

int k;
Run Code Online (Sandbox Code Playgroud)

在这里,ij已声明但未使用.因此,无需定义它们.