【问题标题】:Why strcpy is defined in Lint_strcpy.c in minix?为什么在 minix 的 Lint_strcpy.c 中定义了 strcpy?
【发布时间】:2021-03-30 00:37:43
【问题描述】:

例如,在 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 中定义。这有什么意义?

【问题讨论】:

    标签: freebsd minix


    【解决方案1】:

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

    与原始 NetBSD 源代码一样,用于为 Minix 构建 C 库的 strcpy() 的实际定义在 common/lib/libc/string/strcpy.c 中。

    这样做是为了让内核和用户空间的同一个源文件直接共享同一个定义。

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

    【讨论】: