我在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中有点不同。 有人可以帮忙解释一下这个区别吗?
感谢
答案 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 ++有类)。