首页 > 解决方案 > 为什么在 minix 的 Lint_strcpy.c 中定义了 strcpy?

问题描述

例如,在 FreeBSD 中,strcpy 定义在 lib/libc/string/strcpy.c 中。为什么在 minix 中它是在 lib/libc/string/Lint_strcpy.c 中定义的,而不是像在 FreeBSD 中那样在 strcpy.c 中定义?Lint 前缀是什么意思?

值得一提的是,在 minix 中,一些函数(如 strpcpy)是这样定义的。我的意思是,strpcpy 在 lib/libc/string/strpcpy.c 中定义,但 strcpy 在 lib/libc/string/Lint_strcpy.c 中定义。这有什么意义?

标签: freebsdminix

解决方案


如果您真正查看里面的源代码,lib/libc/string/Lint_strcpy.c您会发现它是一个空定义。

与最初的NetBSDstrcpy()源代码一样,用于为 Minix 构建 C 库的实际定义是common/lib/libc/string/strcpy.c.

这样做是为了可以直接从内核和用户空间的相同源文件共享相同的定义。

前缀表示一个文件,该Lint_文件仅用于创建“lint library”,并且实际上是在某种程度上简化 lint 库的构建过程的快捷方式(理论上它们也可以/应该使用公共源文件)。


推荐阅读