分享变量&整个程序中头文件的结构

时间:2012-06-25 16:14:09

标签: c variables global-variables header-files structure

我在我的程序的整个c文件中共享全局变量和3个结构时遇到了很大的问题。我知道使用全局变量可能不是最好的方法,但这似乎适合我现在。< / p>

出现的两个常见错误是:

variable_name的未定义引用

在变量名之前

错误预期'=',',','%3b','asm'或'属性'

我想做的是:

在variables.h和variables.c中定义我的全局变量

定义函数是file1.h,file2.h等。

喜欢:

file1.h:

#ifndef FILE1_H
#define FILE1_H

void function_file1(void);

#endif

file1.c:

#include "file1.h"

void function_file1(void) {
//do sth
}

我在variables.h中将全局变量和结构定义为extern,然后在variables.c中没有extern关键字。

然而,经过一遍又一遍这样做后,我继续得到上述两个错误。我有什么我想念的吗?

以下是有关我所做的事情的更多信息:

variables.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

functions.h:

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

#include "variables.h"

void do_sth(void) { 
//do sth
}

#endif

的main.c

/* including libraries before including variables.h and functions.h */
#include "variables.h"
#include "functions.h"

........

这是程序的基本结构。有一个包含全局变量的variable.h文件。大约有7个functions.h,比如包含程序的几个函数的文件。这种结构编译器可以没有显示任何错误。

问题是:如何为程序中的每个.h文件创建一个.c文件? 像variables.h和variables.c以及functions.h和functions.c?

1 个答案:

答案 0 :(得分:0)

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

一般来说,某些变量和某些函数之间存在关系。掌握这种关系可能会更有意义。

将变量和函数组合在一起。

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

variables.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

variables.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.ovariables.c编译。