0

我正在用 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 中有点不同。有人可以帮忙解释一下区别吗?

谢谢

4

1 回答 1

0

在 C 或 C++ 中:

应该进入.h

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

每个想要使用变量的对象(如在编译过程中为 a .cor文件生成的中间文件.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++ 有类)。

于 2013-02-04T14:31:23.480 回答