我在我的程序的整个 c 文件中共享全局变量和 3 个结构时遇到了很大的问题。我知道使用全局变量可能不是最好的方法,但这似乎适合我现在。
出现的 2 个常见错误是:
variable_name 的未定义引用
在 variable_name 之前应出现错误 '='、','、'%3b'、'asm' 或 '<strong>attribute'
我想做的是:
在 variables.h 和 variables.c 定义我的全局变量
定义函数为file1.h、file2.h等。
喜欢 :
文件1.h:
#ifndef FILE1_H
#define FILE1_H
void function_file1(void);
#endif
文件1.c:
#include "file1.h"
void function_file1(void) {
//do sth
}
我在 variables.h 中将全局变量和结构定义为 extern,然后在 variables.c 中再次不使用 extern 关键字
但是,在一遍又一遍地这样做之后,我不断收到上述 2 个错误。我有什么遗漏吗?
以下是有关我所做工作的更多信息:
变量.h:
#ifndef VARIABLES_H
#define VARIABLES_H
extern int x;
extern int y;
extern int foo = 3; // i have set value to 3 variables with extern like the foo one
/*Tooltips */
struct test_struct {
/* variables
*/
} test;
extern struct test_struct test;
#endif
函数.h:
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#include "variables.h"
void do_sth(void) {
//do sth
}
#endif
主程序
/* including libraries before including variables.h and functions.h */
#include "variables.h"
#include "functions.h"
........
这是程序的基本结构。有一个包含全局变量的 variables.h 文件。大约有 7 个 functions.h 类文件,其中包含程序的几个函数。使用这种结构,编译器不会显示任何错误。
问题是:如何为程序中的每个 .h 文件制作一个 .c 文件?像 variables.h 和 variables.c 以及 functions.h 和 functions.c 一样?