Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 链接错误“;未解决的外部问题”;与自定义标题包括_C - Fatal编程技术网

C 链接错误“;未解决的外部问题”;与自定义标题包括

C 链接错误“;未解决的外部问题”;与自定义标题包括,c,C,直到最近,我才真正“需要”它,但我正试图弄清楚如何将函数划分为多个头/文件。即使是最简单的事情似乎也不像我想象的那样有效 我有以下代码: main.c #include <stdio.h> #include "hdr.h" int main(void) { test(); return 0; } int test(void) { printf("Hello, world!\n"); } hdr.c #include <stdio.h> #includ

直到最近,我才真正“需要”它,但我正试图弄清楚如何将函数划分为多个头/文件。即使是最简单的事情似乎也不像我想象的那样有效

我有以下代码:

main.c

#include <stdio.h>

#include "hdr.h"

int main(void)
{
  test();
  return 0;
}
int test(void)
{
  printf("Hello, world!\n");
}
hdr.c

#include <stdio.h>

#include "hdr.h"

int main(void)
{
  test();
  return 0;
}
int test(void)
{
  printf("Hello, world!\n");
}
当我尝试使用(cc)编译此文件时,会出现错误“unresolved external(s)”:

我使用的命令行是:

cc -x main.c
为什么会这样?我可以更改代码中的某些内容以避免接触命令行吗?或者我总是要先单独构建自定义的头文件吗?

main.c

#include <stdio.h>

#include "hdr.h"

int main(void)
{
    test();
    return 0;
}
hdr.c

然后您将找到一个名为:a.out的文件,使用以下命令运行它:

cc main.c hdr.c
./a.out
或者你也可以这样:

cc -g -o main main.c hdr.c
./main

您还没有编译test.c,所以它不能linked@Vorsprung有没有办法让hdr.c通过源代码自动包含在编译过程中?当然可以
#包含“test.c”
,但下面的答案是更好的解决方案。我的建议是了解Makefiles如何工作,而不是
#包括“test.c”
。。。甚至不知道为什么会有人提出这样的建议。
./a.out
cc -g -o main main.c hdr.c
./main