为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,因此我的功能仅部分定义。解决此问题的正确方法是什么?非常感谢。我希望这很清楚,让我知道是否可以。
最佳答案
这是您目标的完整且有效的示例。
main.c
#include "somefile.h"
int main() {
somefunc();
return 0;
}
somefile.h
#ifndef RHURAC_SOMEFILE_H
#define RHURAC_SOMEFILE_H
void somefunc();
#endif
somefile.c
#include <stdio.h>
#include "somefile.h"
void somefunc() {
printf("hello\n");
}
示例构建(gcc)
gcc main.c somefile.c -o main
输出
$ ./main
hello
关于c - 正确使用头文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32813896/