9

まず、プログラミングで実際に使用したのは Objective-c メソッドだけです。私はいくつかの簡単な数学計算を c 関数として行うことにし、最終的には複数のクラスでそれらが必要になりました。そこで、c 関数を別の .h ファイルに入れました。.h ファイルを複数のクラスにインポートしようとするまで、これは正常に機能します。次に、次のエラーが表示されます。

重複シンボル *_myFunction* 何とか何とかリンカーコマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください)

このリンク エラーなしで複数のクラスで ac 関数を使用するにはどうすればよいですか。必要なクラスで関数を定義してみましたが、クラスが異なっていても、関数名が同じであればこのエラーが発生するようです。私はおそらくここで夢中になっていますが、理解を助けるのは素晴らしいことです。

4

1 に答える 1

15

宣言を .h ファイルに入れ、それらを extern にし、定義を .c または .m ファイルに移動する必要があります。

これから

myfunctions.h

int max(int a, int b) {
    return a>b ? a : b;
}

これに移動します:

myfunctions.h

extern int max(int a, int b); // declaration

myfunctions.c

int max(int a, int b) {
    return a>b ? a : b;
}
于 2012-05-05T00:43:01.470 に答える