c - 链接器说未定义的函数引用

标签 c linkage

谁能给我解释一下?

文件a如下:

file a.c
#include <stdio.h>
#include <stdlib.h>

int fun1();
int main()
{
     fun1();
     return 0;
}

文件b写成:

file b.c
static int fun1();
int  fun1(){
     printf("fron fun1");
     return 0;
}

当我尝试编译我的代码时,编译器给出了一个错误:对 fun1 的 undefined reference 。 如果我在文件 b.c 中声明 fun1 static 是什么意思?

最佳答案

如果你声明 fun1作为static在 b.c 中,它不会在外部可见,因此您只能在编译单元 b.c 中使用它。放下 static .

注意:为了能够编译您的代码,您还需要添加 #include <stdio.h>在不列颠哥伦比亚省的顶端。

关于c - 链接器说未定义的函数引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18022565/

相关文章:

c - C 预处理器命令的正则表达式

C函数关闭linux系统

c++ - 谁能解释一下 C++0x 草案标准的这一部分?

c++ - C 与 C++ 枚举与 extern "C"的链接

命令行参数可用于其他函数吗?

c - 为什么我的程序打印出奇怪的数组值?

c++ - c++标准库中的所有函数都需要有外部链接吗?

c++ - 在命名空间中包装消息常量

c - 在同一个 makefile 中制作 C 和 ASM 文件失败

c++ - 我可以在不同的 TU 中提供相同的功能定义吗