Où mettre une fonction C pour qu'elle soit accessible à toutes les classes ?
muqaddar
Administrateur
Tout est dans le titre.
Où mettre ce genre de fonction:
de manière à ce qu'elle soit disponible pour plusieurs classes ?
Dans quel type de fichiers ?
Où mettre ce genre de fonction:
[color=#703daa]CGFloat[/color] DegreesToRadians([color=#703daa]CGFloat[/color] degrees) { [color=#bb2ca2]return[/color] degrees * [color=#78492a]M_PI[/color] / [color=#272ad8]180[/color]; }
de manière à ce qu'elle soit disponible pour plusieurs classes ?
Dans quel type de fichiers ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Dans le .c, l'implémentation, comme en ObjC.
Dans cet exemple, tu pourrais aussi préférer une macro:
Ainsi, pas besoin de .c, et la conversion est faite à la compilation.
2) J'ai essayé un .c au début, ça n'a pas marché ? (J'avais importé Foundation)
3) J'avais aussi essayé un .h, qu'appelles-tu le proto dans ce cas ?
- dans un fichier .c (sans appel Objective-C)
- dans un fichier .m (avec appel Objecive-C)
le .h sert généralement à mettre les protos qui sont en fait les signatures des fonctions (le nom sans l'implémentation)
Ah ok, j'ai compris ce qu'il s'est passé.
1) Dans le .c, j'ai appelé de l'Objective-C, je pensais bêtement qu'en important <Foundation> avant ça pourrait marcher.
2) J'ai essayé le .m en premier mais ça n'avait pas marché non plus, peut-être parce que je n'avais pas de .h (je ne me souviens plus de l'erreur de compil)
Tu la déclares dans un fichier .h et c'est tout:
static inline CGFloat DegreesToRadians(CGFloat degrees) { return degrees * M_PI / 180; }
[font=arial,helvetica,sans-serif]Après si tu fais une recherche Google, tu verras des gens qui disent qu'il ne faut pas mettre les static inline dans un hearder et d'autres qui disent le contraire ![/font]
http://stackoverflow.com/questions/7762731/whats-the-difference-between-static-and-static-inline-function
Perso, j'ai une paire de fonctions static inline dans un .h dont je me sers pour toutes les applications et je n'ai jamais eu de problème que ce soit en ObjC ou en C++.
Il n'y a pas vraiment d'intérêt à faire du .c pur.
Normalement en C, c'est un peu plus compliqué à cause du #include qui est moins intelligent que le #import.
global_util.h
global_util.m