1

我有两个 C 文件(第一个文件需要另一个)。

我应该使用#include "XXX.C".obj 文件,但如何单独制作然后连接它(类似于 Borland 的项目)?我读了一些关于link a, b命令的东西,但它不起作用,我找不到任何参考。

谢谢!

4

3 回答 3

4

你不应该使用#include "XXX.C"。如果要单独编译。您必须编写一个包含所有要调用的函数的“XXX.h”。

之后,您可以单独编译文件:

gcc -c YYY.c -o yyy.o
gcc -c XXX.c -o xxx.o

如果要一次编译和链接:

gcc xxx.c yyy.c -o xxx

或者如果你想编译 xxx.c 并使用之前生成的目标文件:

gcc xxc.c yyy.o -o xxx

甚至:

gcc xxx.o yyy.o -o xxx

在最后一个示例中,gcc 将调用链接器,因为没有要编译的源代码。

但是如果你有两个或三个以上的文件,接下来要检查的是如何使用 Makefile。

例子:

xxx.c:

#include "yyy.h"

int x(int a)
{
   return a + 1;
}

int main(int argc, char **argv)
{
   x(1);
   y(2);
   return 0;
}

yyy.c:

int y(int b)
{ 
   return b + 2;
}

yyy.h:

#pragma once
int y(int b);

可以单独编译:

gcc -c yyy.c -o yyy.o
gcc xxx.c yyy.o -o xxx

在本例中,xxx.c 调用定义在 yyy.c 上的函数。

于 2012-09-27T14:56:17.313 回答
1

不,你不应该使用#include "XXX.c". 只应包含标题;代码文件应该彼此分开编译。

具体如何完成取决于您的编译器,但通常您只需将文件一一列出给编译器,如下所示:

gcc main.c helpers.c functions.c
于 2012-09-27T14:49:58.097 回答
1

对于您想要的每个目标文件,您应该有一个 .h (标头,带有声明)和(至少,一个).c (带有实现)文件。

有关头文件的更多信息,请转到此处

然后你只需要这样做:

#include "XXX.h"

包括头文件,而不是 .c 文件!

于 2012-09-27T14:52:49.373 回答