你能解决我的问题吗?查看代码,它是不言自明的:
嗯:
#include"c.h"
void a()
{
printf("I am in a\n");
}
c.h:
#include<stdio.h>
void a();
void b();
主.c:
#include"c.h"
main()
{
a();
}
和gcc main.c
会给我:
/tmp/ccuaiUEA.o: In function `main':
main.c:(.text+0x7): undefined reference to `a'
collect2: ld returned 1 exit status
能否请您以文件扩展名(.h 和 .c)保持不变的方式帮助我?
最佳答案
您需要将 a.h
重命名为 c.c
然后像这样构建和运行:
$ gcc -Wall main.c c.c -o main
$ ./main
说明:你的a.h
是一个源文件,不是header,所以它需要有一个.c
后缀,而不是 .h
。它对应的头文件是c.h
,所以按照惯例它应该被命名为c.c
。当您构建可执行文件时,您需要编译和链接 main.c
和 c.c
源文件,这就是它们都包含在 gcc
中的原因> 命令行。
关于c - C中#include的尴尬问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7317692/