内建函数和库函数
最开始了解到内建函数是在Python这门语言的学习中,她清晰的和库函数进行了对比。
比如标准库函数import xxx后,才能执行对应模块的函数。第三方库还需要安装。而Python的内建函数都在__builtins__里面,在global里直接就可用。__builtins__里面的是在启动Python interpreter的时候就读进内存的,其他的都是要等你第一次import它的时候才会读进内存。
举个例子,Python中,我们可以通过对内建的比较函数进行自定义,来实现运算符重载。
> :对应的内建比较函数为__gt__()
>=:对应的内建比较函数为__ge__()
==:对应的内建比较函数为__eq__()
< :对应的内建比较函数为__lt__()
<=:对应的内建比较函数为__le__()
库函数则是把函数放到库里,供别人使用的一种方式。方法是把一些常用的函数编完放到一个文件里,供不同的人进行调用。调用的时候把它所在的文件名用import加到里面就可以了。
以上是针对Python。但也适用于很多语言。因为我是做嵌入式的嘛,肯定要用到c语言,发现c语言也有很多的内建函数。像printf,puts等等,这些函数不需要包含头文件的声明,就可以编译连接该函数的。但有时候你想自己实现,就会出现冲突。
-fno-builtin
不接受不是两个下划线开头的内建函数(built-in function).目前受影响的函数有_exit,abort, abs, alloca, cos, exit, fabs, labs, memcmp, memcpy, sin, sqrt,strcmp, strcpy和strlen。`-ansi'选项能够阻止alloca和_exit成为内建函数。
解决方法:
在编译时加上-fno-builtin或者-fno-builtin-FUNCTION选项,你就可以自己实现这些函数而不冲突了。
把这些你自己实现的函数改个名称,以便不冲突。
gcc搜索头文件规则:
显式规则:搜索include的头文件。
隐式规则 :如果显式规则找不到,那么他还会搜索gnu下的头文件。
现在我正在看C标准库和gnu libc,等我有了更多了解在写。。
网友评论