将自己的函数包含到 ANSI C 标准库中的过程

Procedure to include own functions to ANSI C Standard library

如何将 his/her 自己的编程函数包含到标准 C (ANSI C) 库中? 任何正在学习或使用 C 语言的人都可以使用这些功能随时随地,一般不需要开发。

示例:某人开发了名为 "FunFun()" 的函数,并假设它对大多数程序员来说都很棒。那么任何人如何在不开发和只包含标准库的情况下访问这个 "FunFun" 函数呢?

无法回答您的问题,因为它基于几个错误的假设。

  • stdlib.h 这样的东西 不是 库。它们是 header 个文件,旨在包含在您的程序中。包含意味着在实际编译发生之前,内容在包含点按字面意思粘贴到您的程序中。它们通常用于声明 库提供的函数、类型、全局变量等。编译后 linked 反对实际的库。

  • 没有 C 库,也没有 C 编译器。 is a language that is specified in an open standard (if you're interested, here's the last draft of the latest standard version C11)。实际实现有很多,一个完整的实现至少包括一个编译器和一个标准库。您 可以 当然可以实现自己的 标准库 。让它 真正 符合标准需要做很多工作(例如,您必须正确实施 printf()scanf() )。使用您自己的标准库,您还可以包含您自己的 扩展 ,但这仅意味着人们使用 您的 标准库(而不是例如 glibc 在 GNU 系统上)可以直接使用它们。

  • 要在 任何 C 实现上提供一个函数,就必须有 C 标准指定它。如果没有一些 非常 好的推理,您将不会在标准中获得新功能。


因此,如果您想让其他人可以使用您自己的功能,请按照每个人所做的去做,只需在您自己的库中实现它。用户可以下载它,包括它的header和link反对它。

处理它的明智方法是开发第 3 方库并通过开源、Github 等在 Internet 上提供它。

GNU C 方言就是这样一个例子,它是 GCC 编译器使用的非标准编译器扩展的集合。可以加入 GCC 开放源代码组并尝试在那里添加新功能。它仍然不是标准库 C,但 GCC 扩展通常是对 C 标准的启发,其中一些(指定的初始化器、灵活的数组成员、匿名 struct/union 等)已被语言本身采用C99 和 C11 标准。 GNU C 的目的之一实际上是作为一个实验性的游乐场,在那里可以现场试用新的语言特性。

如果您真的希望将新函数添加到实际的 C 标准库中,则必须加入 ISO working group 并说服他们应该将该函数添加到该语言中。或者找一位委员会成员,说服他们支持新职能。

所有这些当然都假设您是 C 编程老手,否则没有人会认真对待您。