我第一次遇到这个称为泛型库的术语,我无法理解泛型库的含义。
问问题
1198 次
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 回答