prog_0001
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* C言語における汎用的な関数
-(by [[K]], 2014.10.03)
** (0)
-以前はoSasKdotにプログラミング一般系の話題を書いていたけ...
-ということでここに書くことにする。
** (1)
-たとえば<stdlib.h>のqsort()では、一般化された比較関数と...
int compare(const void *a, const void *b);
-みたいなものを使っている。
-これは、任意の2引数関数を表現していると一般には思われて...
-こんな状況を考えよう。すごくよく似た関数を100本書かなけ...
-となると、関数は本来の引数のほかに、関数をカスタマイズす...
-つまりintを2つとる汎用関数ならこうなる。
int func(void *customize, int a, int b);
-このスタイルを採用するのなら、qsort()はこうなる。
void qsort(base, num, size, compare, customize);
-このcustomizeはcompareを呼び出すときに必ず渡される。つま...
-これが今回の僕の主張である。
-ちなみに何も渡すデータがないのなら、customizeはNULLでい...
** (2)
-ここで関数として、なんらかのVMというかインタプリタみたい...
--まさに汎用的だ!
** (3)
-機械語を実行時に動的に生成してもよければ、常にあるカスタ...
void *makeFunc(void *baseFunc, void *customize, int x, i...
{
p = mallocして、実行権限を付ける.
メモリに機械語を書いて、f(x,y) { return baseFunc(cus...
に相当する関数を作る.
return p;
}
-だからこれを前提にすれば、カスタマイズ構造体へのポインタ...
-でもこの処理はもちろんコンパイラ的な処理が必要なので機種...
* こめんと欄
-(1)は関数型言語での「クロージャ」に近い発想ですね。Cだと...
-おお、yaoさんありがとうございます! -- ''K'' SIZE(10){20...
#comment
終了行:
* C言語における汎用的な関数
-(by [[K]], 2014.10.03)
** (0)
-以前はoSasKdotにプログラミング一般系の話題を書いていたけ...
-ということでここに書くことにする。
** (1)
-たとえば<stdlib.h>のqsort()では、一般化された比較関数と...
int compare(const void *a, const void *b);
-みたいなものを使っている。
-これは、任意の2引数関数を表現していると一般には思われて...
-こんな状況を考えよう。すごくよく似た関数を100本書かなけ...
-となると、関数は本来の引数のほかに、関数をカスタマイズす...
-つまりintを2つとる汎用関数ならこうなる。
int func(void *customize, int a, int b);
-このスタイルを採用するのなら、qsort()はこうなる。
void qsort(base, num, size, compare, customize);
-このcustomizeはcompareを呼び出すときに必ず渡される。つま...
-これが今回の僕の主張である。
-ちなみに何も渡すデータがないのなら、customizeはNULLでい...
** (2)
-ここで関数として、なんらかのVMというかインタプリタみたい...
--まさに汎用的だ!
** (3)
-機械語を実行時に動的に生成してもよければ、常にあるカスタ...
void *makeFunc(void *baseFunc, void *customize, int x, i...
{
p = mallocして、実行権限を付ける.
メモリに機械語を書いて、f(x,y) { return baseFunc(cus...
に相当する関数を作る.
return p;
}
-だからこれを前提にすれば、カスタマイズ構造体へのポインタ...
-でもこの処理はもちろんコンパイラ的な処理が必要なので機種...
* こめんと欄
-(1)は関数型言語での「クロージャ」に近い発想ですね。Cだと...
-おお、yaoさんありがとうございます! -- ''K'' SIZE(10){20...
#comment
ページ名: