-4

ジェネリック ライブラリと呼ばれるこの用語に初めて遭遇しましたが、ジェネリック ライブラリの意味を理解できませんでした。

4

2 に答える 2

2

ジェネリック ライブラリは、複数の型 (複数の数値型など) で使用できるライブラリです。

c11 では、一般的な定義は次のようになります。

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

C の以前のバージョンでは、さまざまなマクロトリックを使用する必要がありまし

于 2013-02-25T11:44:38.257 に答える
0

ここでの「ジェネリック」は、おそらく「パラメータ化されたデータ型」を意味します (Java から来ていますか?)。悲しいかな、C は (データ) 型とのジャグリングが非常に苦手です。「型安全」という意味で。したがって、C での通常の方法は、型固有の作業を行うために実装する必要があるコールバック関数を使用してアルゴリズムをパラメーター化することです。データ自体は通常、 で表されますvoid*

qsort例として、C 標準関数( 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であり、データ型の 2 つの要素を比較できるように提供する必要があるコールバック関数になります。

アルゴリズムを提供する多くのライブラリがあります。数が多すぎて、指定する必要があります...

于 2013-02-25T11:50:21.620 に答える