C中#include的尴尬问题

rah*_*man 2 c include

你能解决我的问题吗?看看代码,它是自我解释的:

啊:

#include"c.h"
void a()
{
    printf("I am in a\n");
}
Run Code Online (Sandbox Code Playgroud)

CH:

#include<stdio.h>
void a();
void b();
Run Code Online (Sandbox Code Playgroud)

main.c中:

#include"c.h"

main()
{
    a();

}
Run Code Online (Sandbox Code Playgroud)

gcc main.c会给我:

/tmp/ccuaiUEA.o: In function `main':
main.c:(.text+0x7): undefined reference to `a'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

能否以文件扩展名(.h和.c)保持不变的方式帮助我?

Pau*_*l R 9

您需要重命名a.hc.c,然后构建并运行如下:

$ gcc -Wall main.c c.c -o main
$ ./main
Run Code Online (Sandbox Code Playgroud)

说明:您a.h源文件,而不是标题,因此需要有.c后缀,而不是.h.c.h按照惯例,它的相应标题应该被命名c.c.构建可执行文件时,需要编译和链接源文件main.cc.c源文件,这就是它们都包含在gcc命令行中的原因.