下一主题:,上一主题:,上级主题:设计建议   [目录][索引]


3.2 与其他实现的兼容性

在偶尔的例外情况下,GNU 的实用程序和库应向上兼容 Berkeley Unix 中的同类程序和库,如果标准 C 规定了它们的行为,则应向上兼容标准 C,如果 POSIX 规定了它们的行为,则应向上兼容 POSIX。

当这些标准发生冲突时,为每个标准提供兼容模式会很有用。

标准 C 和 POSIX 禁止许多类型的扩展。请随意进行扩展,并包含一个 ‘--ansi’、‘--posix’ 或 ‘--compatible’ 选项来关闭它们。但是,如果扩展有很大可能破坏任何实际程序或脚本,那么它就不是真正的向上兼容。因此,您应该尝试重新设计其接口以使其向上兼容。

许多 GNU 程序在定义了环境变量 POSIXLY_CORRECT 时会抑制与 POSIX 冲突的扩展(即使定义的值为空)。如果合适,请让您的程序识别此变量。

当一个功能仅由用户使用(而不是由程序或命令文件使用)时,并且它在 Unix 中做得不好,请随意用完全不同且更好的东西完全替换它。(例如,vi 被 Emacs 替换。)但最好也提供一个兼容的功能。(有一个免费的 vi 克隆,所以我们提供它。)

无论是否有先例,都欢迎额外的有用功能。