0

私は今少し混乱しています。関数でexternを使用すると、すべてに対してグローバルになると思いましたが、そうではないようです...私が今欲しいのは、静的ライブラリで使用できる関数のセットをいくつか用意することです。それをリンクするプログラムで。どうすればいいですか?Objective-Cを使用しています

4

2 に答える 2

1

関数を定義するときのextern代わりに使用するだけでうまくいきます。extern inline

例: inlib.h

extern int foo(int i);
extern int callsfoo(int i);

inlib.m:

#import "inlib.h"
#import "stdio.h"

extern int foo(int i) { printf("Foo: i = %d\n", i); }

extern int callsfoo(int i) {
    printf("Callsfoo:\n");
    foo(i);
}

以下で作成されたライブラリ:
gcc -ObjC -c inlib.m -o inlib.o
ar -q lib.a inlib.o

caller.m:

#import "inlib.h"
#import "stdio.h"

int main(int argc, char** argv) {
printf("Calling foo directly.\n");
foo(1);
printf("Calling foo via callsfoo.\n");
callsfoo(2);
return 0;
}

コンパイル: 次でgcc -ObjC -o caller caller.m lib.a -lobjc
実行:./caller

戻り値:

Calling foo directly.
Foo: i = 1
Calling foo via callsfoo.
Callsfoo:
Foo: i = 2
于 2010-07-02T03:00:04.843 に答える
0

CardDefs.h には次のものがあります。

extern inline
card_config mcc (card_suit s, card_value v, card_points p)
{
    card_config ccfg;
    ccfg.m_suit = s;
    ccfg.m_value = v;
    ccfg.m_points = p;

    return ccfg;
}

そして、この関数をライブラリ内外で使用する必要があります。これに似た他の機能があります。

于 2010-06-29T13:06:27.743 に答える