2009-05-13 2 views
0

Я пытаюсь повторно использовать приложение Apple здесь sample code в моем собственном приложении для iPhone. Я загрузил и скомпилировал проект без проблем, поэтому я добавил некоторые файлы в свое приложение. Когда я пытаюсь скомпилировать свое собственное приложение, компилятор дает мнеxcode дает синтаксическую ошибку в коде cpp

MeterTable.h: 54: ошибка: ошибка синтаксиса перед тем

Соответствующий код «MeterTable» является:

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

class MeterTable // line 54 
{ 
public: 

Это выглядит вид как xcode не распознает MeterTable.h и MeterTable.mm как файлы C++. Однако я проверил файл >> GetInfo для MeterTable.mm, и он перечисляет filetype как sourcecode.cpp.cpp.

Почему это не компилируется?

+0

Я поместил источник, который вы разместили в файле MeterTable.h, добавлен файл MeterTable.mm, который имеет только main() и скомпилировал его. Нет ошибок. Нам нужен образец, который воспроизводит его ошибку, иначе помощь будет невозможной. –

ответ

1
  1. Вы включая "MeterTable.h" в файле, не C++, кроме MasterTable.mm.
  2. Ошибка не в 'MeterTable.h', а в заголовке, включенном до него. Обратите внимание, что <stdlib.h> ... может быть noop, если они включены ранее.

Если вы хотите, чтобы убедиться, что ваш файл скомпилирован с C++, вы можете добавить этот код в начале из MasterTable.mm:

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

Спасибо! Вы правы, я включил MeterTable.h в файле, отличном от C++. Интересно, что я зашел в ваш код, но я все же получил «скомпилированную как C++-ошибку». Не уверен, что там происходит. Во всяком случае, я вернулся на круги своя, поэтому очень спасибо! – niels

+0

Опять же заголовочный файл будет включен как в контексте C++, так и не в C++. Если вы изменили #error на #warning, вы должны увидеть оба – mfazekas

3

сделать следующие вещи, а затем попробовать:

  1. Перейти к сборки Настройка и поиск «Источники компилироваться»
  2. Select «в соответствии с типом файла»
  3. Если вы includin g CPP-файл в любом из ваших классов Objective C, тогда его класс реализации должен быть .mm, просто измените его расширение на .mm from.m.
  4. Помните, что даже если вы используете код CPP иерархически, вам нужно изменить расширение на .mm.