gpt4 book ai didi

c - 有没有办法使函数对库和包含/链接库的人来说是全局的?

转载 作者:行者123 更新时间:2023-11-30 16:04:24 27 4
gpt4 key购买 nike

我现在有点困惑。我认为当你在一个函数上使用 extern 时,它会成为所有东西的全局,但似乎并非如此......我现在想要的是拥有一些可以在我的静态库中使用的函数,并且在链接它的程序中。我该怎么办呢?我正在使用 Objective-C

最佳答案

如果我在定义函数时只使用 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

关于c - 有没有办法使函数对库和包含/链接库的人来说是全局的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3140122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com