2009-05-13 7 views
0

J'essaie de réutiliser Apple Speak ici sample code dans ma propre application iPhone. J'ai téléchargé et compilé le projet sans problèmes, j'ai donc ajouté certains fichiers à ma propre application. Lorsque je tente de compiler mon propre application, le compilateur me donnexcode donne une erreur de syntaxe sur le code cpp

MeterTable.h: 54: erreur: erreur de syntaxe avant 'MeterTable'

Le code correspondant est:

#include <stdlib.h> 
#include <stdio.h> 
#include <math.h> 

class MeterTable // line 54 
{ 
public: 

Il semble genre Comme xcode ne reconnaît pas MeterTable.h et MeterTable.mm en tant que fichiers C++. J'ai cependant vérifié File >> GetInfo pour MeterTable.mm, et il liste le type de fichier comme sourcecode.cpp.cpp.

Pourquoi ne compilera-t-il pas?

+0

J'ai mis la source que vous avez postée dans le fichier MeterTable.h, ajouté un fichier MeterTable.mm qui contient juste main() et l'a compilé. Pas d'erreurs. Nous avons besoin d'un échantillon qui reproduit l'erreur sinon aider va être imposable. –

Répondre

1
  1. Vous y compris "MeterTable.h" dans un fichier non C++ autre que MasterTable.mm.
  2. L'erreur n'est pas dans 'MeterTable.h' mais dans l'en-tête inclus avant. Notez que <stdlib.h> ... peut être un noop s'ils sont inclus avant.

Si vous voulez vous assurer que votre fichier est compilé avec C++, vous pouvez ajouter ce code au début de MasterTable.mm:

#ifdef __cplusplus 
#error "compiled as C++" 
#else 
#error "compiled as C" 
#endif 
+0

Merci! Vous avez raison, j'inclus MeterTable.h dans un fichier non-C++. Fait intéressant, j'ai laissé tomber votre code et j'ai quand même obtenu le "compilé en tant qu'erreur C++". Je ne sais pas ce qui se passe là-bas. Quoi qu'il en soit, je suis de nouveau sur la bonne voie, alors merci beaucoup! – niels

+0

Encore une fois, le fichier d'en-tête sera inclus dans les contextes C++ et non C++. Si vous remplacez #error par #warning, vous devriez voir les deux – mfazekas

0

Essayez de joindre #include directives avec extern "C" { }

3

DO puis essayez les choses suivantes:

  1. Passez au réglage de construction et de recherche « Compile sources »
  2. Sélectionnez « Selon le type de fichier »
  3. Si vous êtes includin g Le fichier CPP de n'importe quelle classe de votre Objective C puis sa classe d'implémentation doit être .mm, il suffit de changer son extension en .mm from.m. N'oubliez pas que même si vous utilisez le code CPP de manière hiérarchique, vous devez modifier l'extension à .mm.
Questions connexes