如何使用标头将多个 c 文件链接在一起



我正在处理一个有多个c文件的项目。每个 c 文件都有自己的标头。现在我想把所有的c文件放在一起。作为准备,我尝试了以下方法:

这将是我的示例c代码(function.c):

#include <stdio.h>
#include "function.h"
void output()
{
    printf("Thats a textn");
}

这是关联的头文件 (function.h):

//header function.h
#ifndef FUNCTION_H_
#define FUNCTION_H_
#endif // FUNCTION_H_

这就是我的主要内容:

#include "function.h"
int main()
{
    output();
    return 0;
}

我希望有以下输出:

"那是文字"

但我只收到以下错误:

对"输出"的未定义引用

我在这里做错了什么?

多谢!

您需要标头

output函数的原型,以便它在其他模块中可见。

//header function.h
#ifndef FUNCTION_H_
#define FUNCTION_H_
void output(void);
#endif // FUNCTION_H_

并且您需要链接模块(源文件function.c),以便实际提供主模块使用的output的定义。

例如,您可以直接将它们编译在一起:

gcc main.c function.c -o my_out

您可能还想查看Makefiles。

你的标题应该是

//header function.h
#ifndef FUNCTION_H_
#define FUNCTION_H_
void output();
#endif // FUNCTION_H_

像这样编译:(实际标志可能取决于使用的编译器)

cc -c main.c

(创建主点)

cc -c function.c

(创建函数。

cc main.o function.o

(创建 a.out 或任何系统默认值)

。或者正如其他人提到的:

cc main.c function.c

(全部做到了)

相关内容

  • 没有找到相关文章

最新更新