C 链接错误“;未解决的外部问题”;与自定义标题包括
直到最近,我才真正“需要”它,但我正试图弄清楚如何将函数划分为多个头/文件。即使是最简单的事情似乎也不像我想象的那样有效 我有以下代码: main.cC 链接错误“;未解决的外部问题”;与自定义标题包括,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
#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