C 我们是否可以声明、定义&;为一个变量赋值并在另一个文件中使用这些变量?
我是C编程的初学者,我正在尝试不同的方法,并用小程序进行实验 我有四个文件。两个头文件和两个源文件。我想:C 我们是否可以声明、定义&;为一个变量赋值并在另一个文件中使用这些变量?,c,header-files,preprocessor-directive,multiple-definition-error,C,Header Files,Preprocessor Directive,Multiple Definition Error,我是C编程的初学者,我正在尝试不同的方法,并用小程序进行实验 我有四个文件。两个头文件和两个源文件。我想: 声明一个变量(实际上是两个变量和一个字符)和 函数(来自第二个源文件)在一个头文件中 定义这些变量并在第二个标题中为其赋值 文件(来自点1的变量) 编写一个包含这两个头文件的函数,并使用 这些文件(第2点)中的值在一个源文件(不带主文件)中- 只是使用变量的函数定义) 有一个从第二个调用函数的主源文件 源文件(从第3点开始) 我该怎么做?我已将这两个头文件都包含在.c文件中。但是当我尝试编
多重定义。。。首先在此处定义所有变量的
错误
我已经看过这些答案,并且
我不太明白这个问题的答案,因为我不知道如何使用头球护卫。
我不知道如何勾选所有框(第1点到第4点)
校长1.h
extern int i,j; extern char c;
void ad_d();
校长2.h
int j=6;int i=7;
char c='x';
fnfile.c
#include "header1.h"
#include "header2.h"
#include<stdio.h>
void ad_d()
{
i+=j;
printf("\n %d \t %c \n", i,c);
}
#包括“header1.h”
#包括“header2.h”
#包括
无效ad_d()
{
i+=j;
printf(“\n%d\t%c\n”,i,c);
}
filemain.c
#include<stdio.h>
#include "header1.h"
#include "header2.h"
void main()
{
ad_d();
}
#包括
#包括“header1.h”
#包括“header2.h”
void main()
{
ad_d();
}
您只能定义一次变量,该变量将占用内存中存储该值的空间。然后,您可以在每个文件(或者更好的是在公共头文件)中声明变量,这将告诉编译器该名称和类型的变量将在其中一个编译文件中定义,并且可以在以后的阶段找到
在要定义变量用途的文件中:
int my_global = 0; /* always good practice to initalize */
在其他文件(或公共标题)中,请使用:
现在,您可以从声明my_global的任何文件中读取或写入my_global
header guard是一种试图将定义和声明移动到同一个语句中的方法,在您的级别上,在尝试玩类似的游戏之前,最好先处理声明和定义
int j=6;int i=7;
char c='x';
您不希望将它们放在头文件中,因为它们是定义。将它们放在C文件中,只在两个文件中包含相同的头(使用变量的extern
声明)
目前,您的两个源文件都试图定义这些变量,这就是为什么会出现错误。根据您更新的问题,您不需要header2.h。不应在标头中定义变量,因为标头可能只包含一次。simple将header2.h中的定义放入tghe c文件的eitehr(但不是两者)中。这是消除错误的最简单方法。我试过了。但我只是想让事情变得尽可能复杂(通过某种方式连接所有文件),以便更好地理解。如果我保持.h文件的原样,有没有办法更改.c文件以避免错误?(这正是我希望做的)从一个c文件中删除#include“second.h”,所以你是说如果我将
header2.h
更改为header2.c
(当然添加stdio.h
),它应该可以工作?@ad3不,只需将这些定义放在fn2.c中,而不是头文件中-你不需要header2.h。
int j=6;int i=7;
char c='x';