J'ai une bibliothèque qui utilise une fonction en ligne C, et compile très bien. Lorsqu'une autre bibliothèque fait référence à cette bibliothèque, elle est toujours compilée correctement. Mais si une application réelle fait référence à la bibliothèque, elle ne parvient pas à se compiler, indiquant que le symbole _functionNameHere (oui, nom de la fonction commençant par souligné) - symbol est introuvable.Objectif C: fonction inline - symbole non trouvé
Si je supprime le spécificateur en ligne, tout compile bien. Mais tant qu'une fonction est en ligne dans la bibliothèque, l'application ne peut pas compiler!
Des idées pour expliquer pourquoi?
Je connais à peu près les compilateurs, mais je suis nouveau dans l'Objective-C, et tout ce que je sais à ce sujet n'est rien de plus que des suppositions éclairées. Et même de cette façon, je ne peux pas penser à une raison pour laquelle il se comportera de cette façon. Le fait est que la fonction inline est INLINE, ce qui signifie qu'il n'y a pas de symbole du tout, qu'elle est compilée inline partout où elle est appelée, et que l'application de référencement ne devrait même pas savoir qu'elle existait. Cela est vrai tant que la fonction inline est toujours inline-able, et est privée à la bibliothèque, et il n'y a pas de configuration spéciale du compilateur qui empêche l'inlining, et tout cela est vrai.
Donc, tout le monde s'il vous plaît venez pointer du doigt ce que je fais/penser mal ...
Merci :-)
Arrix - Je viens de tester en fonction de ce que vous nous avez expliqué ici. Si j'ajoute 'double radians en ligne (doubles degrés) {return degrees * M_PI/180; } 'en haut d'un fichier ViewController.m puis appel radians() dans une méthode dans ce fichier, j'obtiens l'erreur de l'éditeur de liens, même si j'ai défini ma configuration sur Release. Sûrement dans ce cas, la fonction s/être en ligne et donc le mot-clé statique n'est pas nécessaire? – Brynjar