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

来电者.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 回答