2

この質問は、javascript が嫌いな人や筋金入りの開発者にとって衝撃的かもしれませんが、ご容赦ください。

JavaScript でコールバック関数を記述できる方法が気に入っています。

var on = function(isTrue, doThis) {if (isTrue) doThis();}

C で同じアイデアを再現する可能性はありますか? タイプ依存であることは知っています。ますますこれは私の場合です:

複数のブール値と複数のフィルターがあるため、書く代わりに使用します

if (thisIs == true) executeThisVoid(passingThisStruct)

私は書きたいです:

on(thisIs, function(struct){ do this and this})

または単に

on(thisIs, executeThisVoid);

皆さん、どうもありがとう。

4

2 に答える 2

2

では、どうぞ。最初に次を定義します。

void on(int thisIs, void (*executeThis)(void)) {
    if (thisIs)
        (*executeThis)();
}

次に、someVoid を定義します。

void someVoid(void) {
    /* ... */
}

次に、別の関数内で次のように呼び出します。

on(1, someVoid);
于 2013-01-26T22:22:06.507 に答える
0

私が知っているように、Cでは関数を指すことができます...したがって、onが2つの関数ポインターを取得するメソッドであり、thisIsが関数ポインターであり、executeThisVoidがalos 1である場合、問題はないはずです。構造体を外側のスコープに保持するか、メソッド呼び出しのチェーンを表す別の構造体を作成します(パラメーターやその他のものを保持するため)。

于 2013-01-26T22:10:09.933 に答える