2010-07-08 7 views
3

Je souhaite inclure quelques fonctions C dans mon projet Objective C. Des choses simples comme ceci:Organisation du code C dans mon projet Xcode

CGPoint vectorSum (CGPoint point1, CGPoint point2) { 
    return CGPointMake(point1.x+point2.x, point1.y+point2.y); 
} 

Quelle est la meilleure façon de garder les choses organisées?

En particulier, je remarque que quand je vais créer un fichier .c, il me donne une option pour créer un fichier d'en-tête. Est-ce une chose utile à faire?

EDIT - ajouter plus de détails:

Je peux tout à travailler en disant Xcode pour créer une classe Objective-C « VectorSum », la suppression de l'en-tête de classe réelle et la mise en œuvre, la définition de la vectorSum de fonction ci-dessus dans le fichier de mise en œuvre, et ayant le fichier d'en-tête contient les éléments suivants:

#import <Foundation/Foundation.h> 

CGPoint vectorSum (CGPoint point1, CGPoint point2); 

Cela fonctionne, mais il se sent « mal ». . . pourquoi suis-je en train de créer une classe C objective alors que ce que je veux vraiment, c'est du code C? Cependant, si j'essaye de le faire avec l'option de Xcode pour créer un fichier C droit, je ne peux pas le faire fonctionner. Si je n'importe pas la fondation, le compilateur se plaint de ne pas savoir ce qu'est un CGPoint. Et si j'importe la base, j'obtiens des erreurs de compilateur zillion, vraisemblablement parce que Xcode essaye de lire la fondation en tant que code C.

Répondre

1

Le code C brut ne peut pas importer les structures d'objectif C (Cocoa/Foundation/etc).

Au lieu de cela, ils comprennent les cadres à base C pertinents ...

par exemple

#include <ApplicationServices/ApplicationServices.h> 

ou

#include <CoreFoundation/CoreFoundation.h> 

Xcode ne fournit pas une option pour ajouter un simple fichier .m au projet, mais vous pouvez simplement ajouter un fichier .c, puis le renommer à un. m sans aucun problème.

Le fichier d'en-tête sera utile afin que votre autre code puisse l'inclure pour obtenir les déclarations de vos fonctions d'assistance.

Questions connexes