0

重複の可能性:
cで関数を動的に作成する

これが私がやりたいことの例です:

void  attribute((constructor)) someFunction() {
    // Would be nice to define C function "someFunction2" somehow here.
}

class_addMethod実行時にObjective-CクラスにC関数を追加できることは知っています。

mainC空間にC関数を追加することはできますか?

どうか、私がこのようなやり方を考えているのなら、私が間違っていると言わないでください。私は教育目的ではなく、それに興味があります。

4

1 に答える 1

4

いいえ。AC機能は名前と本体で構成されています。コンパイラは、本体を実行可能コードのバイナリ部分に変換します。このコードは、実行可能ファイルからプロセスが作成されるときに、あるアドレスにマップされます。この名前は、静的リンカと動的リンカによってこのアドレスのエイリアスとして使用されます。

実行時には、両方の概念はあまり重要ではありません。実行可能ファイルがロードされ、名前が解決されるため、動的に作成することにはほとんど意味がありません。

iOSでは、カーネルがメモリを実行可能にすることを許可していないため、新しい関数の実装を作成することさえ不可能です。

于 2012-12-30T07:04:37.507 に答える