Сейчас я немного смущен. Я думал, что когда вы используете extern для функции, она станет глобальной для всего, но это не похоже на то, что я хочу прямо сейчас, это иметь некоторый набор функций, которые я могу использовать в своей статической библиотеке и в программе, которая связывает его. Как мне это? Я использую Objective-CЕсть ли способ сделать функцию глобальной для библиотеки и для тех, кто включает/связывает библиотеку?
0
A
ответ
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
Returns:
Calling foo directly.
Foo: i = 1
Calling foo via callsfoo.
Callsfoo:
Foo: i = 2
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;
}
И я должен использовать эту функцию в библиотеке и за ее пределами. У меня есть другие функции, похожие на это.
Вы можете принять ответ, который помог вам больше всего, нажав на значок проверки под вверх/вниз иконки голосования ответ. – Thea
Приведите пример кода, который у вас уже есть. – Paul