如何在c中对通用数据成员/变量进行分组?

时间:2013-02-04 13:57:49

标签: c header include

我在C中编写一个代码,它具有以下基本结构:

A部分:主模块的启动/初始化,调用各个子模块以及最终补充子模块的结果。

B部分:子模块的实际执行。

Now, part A has its own main.c and main.h file
Part B has three modules: 
sub1.c/sub1.h
sub2.c/sub2.h
sub3.c/sub3.h

子模块中使用了许多常见的变量和函数。 我希望有一个通用模块,可以在所有子模块中使用#included,并使用所有常用功能/变量。 (common.c和common.h)

现在,对于常用函数,我可以在common.h中声明它们然后在common.c中定义,然后它们可以直接在所有子模块中使用。 但是还有很多常见的数据变量/成员我想要“共同”出来。

这样做最有效的方法是什么,以便我可以直接在所有子模块中使用它们?

在c ++中,它可以添加到common.h中,然后可以与包含common.h的任何文件一起使用,但我相信它在c中有点不同。 有人可以帮忙解释一下这个区别吗?

感谢

1 个答案:

答案 0 :(得分:0)

在C或C ++中:

应该进入.h

// declaration, means it's defined somewhere else
// can declare it as many times as you want
extern int yourVariable;

每个对象(如在.c.cpp文件的编译过程中生成的中间文件中,而不是OOP中的对象)想要使用变量需要知道它(因此在某处有定义。)

应该使用.c / .cpp

int yourVariable = 3; // definition, should only define it once
int yourVariable2; // also a definition

extern关键字对于函数是可选的。

int square(int num); // function declaration (.h)
extern int square(int num); // same as above
int square(int num) { return num*num; } // function definition (.c)

在C ++中:

应该进入.h

// this is a declaration
class yourClass
{
  int yourVariable;
}

应该进入.cpp

int yourClass::yourVariable = 3;

我可能错了,但我不知道C和C ++在这方面的区别(除了C ++有类)。