在main.c中出现未定义引用的错误。这是因为我有这样的几个文件:
main.c
{
#include "somefile.h"
somfunct() <--- undefined reference error
}
somefile.h
{
somefunct() declaration
...
}
somefile.c
{
#include "somefile.h"
somefunct() definition
...
}
我正在尝试使用正确的组织,因为我只在头文件中使用声明并在单独的文件中定义它们。拆分我的代码后,我得到了未定义的引用错误,因为somefile.h和somefile.c之间没有链接。 尽管main.c包含了somefile.h头文件,但somefile.h中没有任何内容明确提到somefile.c ,所以我的函数只是部分定义的。处理这个问题的正确方法是什么?非常感谢。我希望这很清楚,如果没有,请告诉我。
答案 0 :(得分:4)
以下是您目标的完整且有效的示例。
#include "somefile.h"
int main() {
somefunc();
return 0;
}
#ifndef RHURAC_SOMEFILE_H
#define RHURAC_SOMEFILE_H
void somefunc();
#endif
#include <stdio.h>
#include "somefile.h"
void somefunc() {
printf("hello\n");
}
示例构建(gcc)
gcc main.c somefile.c -o main
<强>输出强>
$ ./main
hello