是否可以将我自己的函数添加到 C 现有库中?

问题描述

是否可以将我自己的函数添加到 C 现有库中?比如我想添加这个功能

#include <stdio.h>
int main()
{
    int prices[5] = { 1,2,3,4,5 };
    int size = sizeof prices / sizeof prices[0];
    return size;
}

stdio.h 图书馆。

有可能吗?如果是,我该怎么做?

解决方法

通常,您可以创建自己的库,其中包含所有其他库以及您添加的例程,并且可以在您的系统中安装该库来代替原始库。

你不应该这样做。

一般来说,当一个人想要提供一个功能时,一个人会编写自己的库并将其作为一个单独的产品发布。

stdio.h 不是图书馆。它是一个头文件。它声明在别处定义的对象和函数,它可能声明相关的东西,如宏和类型名称。术语“库”通常用于指相关的打包目标模块或作为软件库的整个产品:目标模块、头文件及其文档。

在 C 中,函数无法计算数组的长度,因为无法将数组传递给函数。当数组用作函数的参数时,编译器会自动将其转换为指向数组第一个元素的指针。这个指针没有关于数组大小的任何信息。例如这个函数:

size_t foo(int array[])
{
    return sizeof array / sizeof array[0];
}

将返回指向 int 的指针的大小除以 int 的大小。对于传递给它的任何大小的所有数组,它都会返回相同的值,因为它的 int array[] 参数会自动调整为 int *array

可以定义一个宏来计算数组的大小:

#define NumberOf(a) (sizeof (a) / sizeof *(a))

这可以作为宏使用,因为宏不同于函数。宏参数不像函数参数那样传递,sizeof 运算符直接使用它的参数 - 不会对 sizeof 操作数执行数组到指针的转换。

这个宏可以在头文件中发布,尽管它非常简单,通常只在使用它的源文件中定义,而不是在头文件中提供。如果您确实在头文件中发布了它,则应该将其发布在您自己的头文件中。在创建自己的 C 实现之前,不应修改标准 C 头文件。

,

在您当地是可能的:

您的更新有朝一日出现在任何公共发行版(例如 MacOS 或 Ubuntu)中的可能性很小:正如您在评论中所见,开发者社区尚未准备好接受此类更改。

帮助人们的更好方法是创建自己的图书馆并将其传播到全世界。

,

stdio.h 图书馆。

stdio.h 不是库只是一个头文件。

是否可以将我自己的函数添加到 C 现有库中?

当然有,但没有太大意义。只需创建您自己的库。

更改标准库是一个非常糟糕的主意,除非您知道自己在做什么(阅读:您是一位非常有经验的程序员)并且您将其移植到另一个目标或在您自己的实现上工作。

我想添加这个函数:int main()

向库中添加 main 函数是一个非常糟糕的主意。