你怎么称这两个.c文件之间的关系?

时间:2014-06-04 08:47:55

标签: c++ c makefile uml

我有点困惑,我多年来一直在做C,我又一次开始做。我不清楚的一件事是两个相互调用的文件的关系,例如:

  

testa.c

int main (void)
{
    callTheOtherFunction();
    return 0;
}

和另一个文件

  

testb.c

callTheOtherFunction(){
//do some stuff
}

现在我的" makefile"看起来像

  

gcc -o test ./testa.c ./testb.c

这是什么意思? callTheOtherFunction现在是testa.c的一部分,就像这两个文件已合并一样吗?或者它与继承有关? callTheOtherFunction现在是一个全局函数,或者你会怎么称呼它?

我需要从中绘制UML图表,这就是为什么我需要该案例的表达式。

2 个答案:

答案 0 :(得分:3)

源文件从不"合并"。发生的事情是,在编译阶段,将生成两个目标文件 - 每个源文件一个,稍后在链接阶段,两个目标文件将链接(并且还与一些隐式系统库链接),生成可执行文件。

答案 1 :(得分:2)

编译器将两个文件编译为目标代码,然后链接器将从目标文件生成单个可执行文件。正如你所说的那样,就像这两个文件已被合并。

callTheOtherFunction可以从任何地方访问(我想你会称之为全局函数),因为你没有标记它的定义static

作为旁注,您可能应该从该编译中收到编译器警告,因为您在 testa.c 中没有声明callTheOtherFunction