一次gcc编译失败分析

1. 场景:

​ 在使用gcc编译时,编译器报错:xxx:'xxx'未定义的引用

2. 排查过程:

  1. 首先,我很自然的想到是不是自己使用了未定义的函数或者将函数名称写错了,在检查了一边过后,我发现自己使用的函数在头文件中是有定义的,于是将该可能选项排除。
  2. 然后,我检查自己的编译命令是否存在使用错误。在搜索引擎中搜索了各种编译命令,并尝试了一遍后,都失败了。
  3. 最后,发现问题出在函数定义的,我将函数定义成static类型,却在其他文件中使用,于是编译器抛出undeclared function

3. 问题分析:

​ C 语言中,static关键字修饰函数时,相当于java中的关键字private,表示该函数只能在函数声明的文件中调用,所以编译器在编译过程中自动忽略了该函数,抛出undeclared function,导致编译失败

posted @ 2018-05-12 22:38  pickline  阅读(539)  评论(0编辑  收藏  举报