Linux Buildin-functions

发布日期:2011-11-6 13:16:34

最近在看linux内核剖析,想在windows下用mingw进行编译,可今天在编译string.c时出现一下提示

warning: conflicting types for built-in function 'strchr'

后来查了资料也弄明白,在C语言标准中,有些通用函数被定义为built-in function(内建函数),像printf,strchr,memset等等,这些函数不需要包含头文件中的声明,就可以编译连接该函数的。但有时候你想自己实现,就会出现冲突的提示。

解决办法:在编译是加上-fno-builtin或者-fno-builtin-FUNCTION 选项,你就可以自己实现这些函数而不冲突了。

例如在上面的提示中,你编译时加上-fno-builtin-strchr ,就可以正常编译了

-fno-builtin

不接受不是两个下划线开头的内建函数(built-in function).目前受影响的函数有_exit, abort, abs, alloca, cos, exit, fabs, labs, memcmp, memcpy, sin, sqrt, strcmp, strcpy,和strlen.

反过来理解, 应该就是只接受两个下划线开头的内建函数