-4

我第一次遇到这个称为泛型库的术语,我无法理解泛型库的含义。

4

2 回答 2

2

泛型库是一种可以与一种以上类型一起使用的库,例如,一种以上的数字类型

在 c11 中,通用定义可能如下所示:

#define cbrt(X) _Generic((X), long double: cbrtl, \
                              default: cbrt, \
                              float: cbrtf)(X)

在早期版本的 C 中,必须使用各种宏技巧,例如,如评论@user1929959 所指的 SO 问题所示

于 2013-02-25T11:44:38.257 回答
0

这里的“通用”可能意味着“参数化数据类型”(来自 Java?)。唉,C 在处理(数据)类型方面非常薄弱——在“类型安全”的意义上。因此,C 语言中的常用方法是使用回调函数对算法进行参数化,您必须实现这些回调函数才能完成特定于类型的工作。数据本身通常由void*.

作为示例,您可以查看 C 标准函数qsort(来自man sort):

#include <stdlib.h>

void qsort(void *base, size_t nmemb, size_t size,
           int(*compar)(const void *, const void *));

base是指向您的数据的“通用”指针,nmemb并且size是有关您的数据的附加信息,并且compar将是您必须提供的能够比较数据类型的两个元素的回调函数。

有许多库为您提供算法。这个数字太大了,您需要指定...

于 2013-02-25T11:50:21.620 回答