为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/

10-12 00:23