如上图所示,今天遇到的一个编译问题,明明用法跟其他地方的一摸一样,在主程序里编译就没问题,动态库里死活都编译不过去,可把我折磨死了,最后没办法,只能请教大佬,大佬过来几分钟就找到了问题,真正出错的地方并不是报error的地方,而是截图中圈红的地方,最后发现是编译选项出的问题,果然一看主程序里面编译选项是-std=gnu99,动态库里编译选项却是-std=c99,原因就出来了 下面给出解决方案:
warning: implicit declaration of function ‘typeof’
错误提示缺少')';
修改方法:
__asm__/__inline__/__typeof__
就可以解决该问题;
或者在gcc的编译参数中去掉std=c99编译选项,改成-std=gnu99.
最后编译通过。
个人总结:为什么大佬可以解决这种问题,但是自己却解决不了,一个是经验问题,还有一个更重要的就是对数据的敏感度,出现这个问题我一直盯着error看,但其实真正原因是圈红线的地方导致后面出现错误,所以距离一个优秀的程序员任重而道远,唯有总结经验,砥砺前行,学习大佬们的思维模式,对任何数据都保持怀疑态度,才会在这条路上越走越远!!!