0

私のプロジェクトには、C 関数のみを含む doSomething.m および soSomething.h ファイルがあります。

void doSomething() {

}

最初の質問: ヘッダーをインポートする必要なく、コード内の任意の場所からこの関数にアクセスできるようにするにはどうすればよいですか?

注:この問題を解決するために doSomething.h ファイルはまったく必要ないと思いますが、その有無は制限ではありません。

私は次の知識を持っていますが、必要なものの全体像を把握できません。

  • コンパイルの実行時に実行されるattribute((constructor))を持つ別の関数を使用でき、 doSomethingを登録するための操作を行うことができます。
  • _class_addMethod_ は「実行時」にメソッドを追加します。しかし、「グローバル名前空間のクラス」を解決する方法がわかりません。
  • NSObject の+ loadメソッドですが、ここでは関係ありません。

最初の質問に加えて2 番目のトリッキーな質問: 最初の質問に対する回答が得られた場合、「関数 'doSomething' の暗黙的な宣言は C99 では無効です」を防ぐにはどうすればよいですか? ?

更新:次のオプションを考慮から除外するのを忘れていました:

  1. .pch ファイル、グローバル ヘッダー
  2. doSomethingメソッドを使用するファイルには、extern void doSomething()のような追加の宣言を含めないでください。
4

2 に答える 2

3

実際に作成することはできないので、ヘッダーをインポートする必要はありませんが、できることは、プリコンパイルヘッダーにインクルードを追加することです

プロジェクトの「Supporting Files」フォルダーを調べます。

このようなファイルが表示されます

<ProjectName>-prefix.pch

このファイルの最後にインポートを追加します。すべてのファイルにすべてのインポートがここに追加されます。

ノート

Xcodeを使用しています

GnuStep などの別の IDE を使用している場合は、同様の別の場所がある可能性が高いと思います。他の IDE がどのように機能するかはわかりません。

于 2012-12-27T22:29:50.863 に答える
0

使用するファイルで、インポートします。

extern void doSomething (void);
于 2012-12-27T22:29:23.177 に答える