【编译器版本】
arm-linux-gcc 4.3.2
【问题描述】
在做OK6410裸机开发时,自己写了一个putchar函数,也就是通过串口发送字符串到超级终端。但在编译程序的时候出现了如下问题:
warning: conflicting types for built-in function 'putchar'
【问题分析】
在C语言标准中,有些通用函数被定义为built-in function(内建函数),像printf,puts,strchr,memset等等,这些函数不需要包含头文件中的声明,就可以编译连接该函数的。但有时候你想自己实现,就会出现上面所示的冲突提示。
有的时候你不用包含一些头文件,也能使用那个里面包含的函数,可能是编译器包含了一些常用的简单的函数的处理,即便是你不包含头文件,编译器也知道到哪里找,但是如果是一些复杂的函数,或者是你自己写的静态库,你想使用时必须要包含;仅仅只是一些简单的函数你不用包含头文件而已。
【解决办法】
1.在编译是加上-fno-builtin或者-fno-builtin-FUNCTION 选项,你就可以自己实现这些函数而不冲突了。例如在上面的提示中,你编译时加上-fno-builtin-puts ,就可以正常编译了。
2.把这些函数改个名称,以便不冲突。
OK6410 串口警告:warning: conflicting types for built-in function 'putchar'
最新推荐文章于 2025-04-19 10:21:16 发布
本文介绍了在使用arm-linux-gcc4.3.2编译器进行OK6410裸机开发过程中,自定义putchar函数与内置函数冲突的问题及解决方法。提供了两种解决方案:一是编译时使用-fno-builtin选项禁用内置函数;二是更改自定义函数名称。
315

被折叠的 条评论
为什么被折叠?



