我正在处理一个有多个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
(全部做到了)