我第一次遇到这个称为通用库的术语,我无法理解通用库的含义。
答案 0 :(得分:2)
通用库是可以与多种类型一起使用的库,例如,多个数字类型
在c11中,通用定义可能如下所示:
#define cbrt(X) _Generic((X), long double: cbrtl, \
default: cbrt, \
float: cbrtf)(X)
在早期版本的C中,只需要使用各种宏技巧,例如:如SO question referred to by @user1929959 中的the commentary所示
答案 1 :(得分:0)
“Generic”这里可能意味着“参数化数据类型”(来自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
将是回调函数,你必须提供能够比较数据类型的两个元素。
有许多库为您提供算法。这个数字太大了,你需要指定......