c - C中#include的尴尬问题

标签 c include

你能解决我的问题吗?查看代码,它是不言自明的:

嗯:

#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.cc.c 源文件,这就是它们都包含在 gcc 中的原因> 命令行。

关于c - C中#include的尴尬问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7317692/

相关文章:

c - 为什么这个可变参数函数在 Windows x64 上的第 4 个参数上失败?

c - 这个增量和减量分配试图做什么?

c - 在 C 中,我可以推迟头文件的 "typedef"直到我包含并使用头文件吗?

c++ 编译错误 "redefinition of",需要帮助才能找到它

c++ - 如何管理标题的#include?

php - 如何修复不断进行的重定向过程?

C:如何对不带任何参数且主程序链接到单元测试框架的函数进行单元测试?

c - 为什么在写入时删除文件时 write() 不会失败?

c - 什么决定了一个全局定义的字符串是在数据段的读写区还是只读区?

include - grep --include 选项的用法?