2

我在我的程序的整个 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 一样?

4

1 回答 1

0

首先重新考虑将变量和函数本身分开是否真的有意义。

一般来说,一些变量和一些函数之间是有关系的。按照这样的关系进行分组可能更有意义。

将变量和一起处理它们的函数分组。

无论如何,回到您的问题,定义和声明变量的可能方法如下:

变量.h:

#ifndef VARIABLES_H
#define VARIABLES_H

extern int x;
extern int y;
extern int foo;

struct test_struct {
/* variables 
*/

};

extern struct test_struct test;

#endif

变量.c:

#include "variables.h"    

int x;
int y;
int foo = 3; // i have set value to 3 variables with extern like the foo one


struct test_struct test;

...

包含variables.h到任何使用外部的模块中,然后让链接器添加variables.o编译出来的variables.c.

于 2012-06-26T08:22:19.730 回答