Je suis un peu confus maintenant. Je pensais que lorsque vous utilisiez extern sur une fonction, il devenait global pour tout, mais cela ne semble pas le cas ... Ce que je veux en ce moment, c'est d'avoir un ensemble de fonctions que je peux utiliser dans ma bibliothèque statique et dans le programme qui le relie. Comment je fais ça? J'utilise Objective-CExiste-t-il un moyen de rendre une fonction globale à la bibliothèque et à ceux qui incluent/lient la bibliothèque?
0
A
Répondre
1
Cela fonctionne pour moi, si je viens d'utiliser extern
au lieu de extern inline
lors de la définition de la fonction.
Exemple: 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);
}
Bibliothèque créé avec:
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;
}
Compilé avec: gcc -ObjC -o caller caller.m lib.a -lobjc
Run avec: ./caller
Retours:
Calling foo directly.
Foo: i = 1
Calling foo via callsfoo.
Callsfoo:
Foo: i = 2
0
Sur CardDefs.h je:
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;
}
Et je dois utiliser cette fonction dans la bibliothèque et à l'extérieur. J'ai d'autres fonctions qui sont similaires à cela.
Vous pouvez accepter la réponse que vous avez aidé plus en cliquant sur l'icône de sélection sous les icônes de vote haut/bas de la réponse. – Thea
Fournissez un exemple du code que vous avez déjà. – Paul