error de iphone: esperado ‘=’, ‘,’, ‘;’, ‘asm’ o ‘__attribute__’ antes de ” foo ‘

Estoy intentando portar el ejemplo de speakhere en otra aplicación y estoy teniendo problemas. Copié todos los archivos y todos los marcos, pero por alguna razón recibí un montón de errores de comstackción que nunca había visto antes y, por lo tanto, no sé qué hacer. La única diferencia es que no estoy demandando IB, así que tuve que cambiarlo un poco.

¿Qué significa error: expected '=', ',', ';', 'asm' or '__attribute__' before 'foo' ? … Recibo este error varias veces para diferentes archivos

En mi situación, el primer error apunta a ‘MeterTable’ … una clase que incluye , y . Pero esos archivos parecen estar importando bien (si los elimino, recibo más errores)

¿Alguna sugerencia sobre cómo depurar esto?

TIA!

EDITAR: Todavía no puedo entenderlo. Literalmente solo copio archivos del ejemplo en otro proyecto. ¿Puede alguien echarle un vistazo por favor? SpeakHerePort.zip y el original está aquí SpeakHere.zip

Su problema es que está comstackndo SpeakHerePortAppDelegate.m, que es un archivo Objective C, pero indirectamente incluye MeterTable.h que es un archivo de encabezado C ++.

Cambie el nombre a SpeakHerePortAppDelegate.mm (doble m) para que se compile como Objective C ++ y se resuelva su problema.

Nombre todos sus archivos .mm y luego todo su código se comstackrá como Objective C ++

En mi caso, los .h y .m en cuestión están bien diseñados con el objective habitual, y la aplicación también puede ejecutarse.

Sin embargo, después de que el subconjunto de los archivos se mueve bajo un objective de biblioteca estática, obtiene este error de comstackción cuando se genera la biblioteca estática.

Estuve atascado por un tiempo y probé las técnicas antes mencionadas, desafortunadamente no ayudaron en mi caso.

Notó que este error ocurrió solo para NSString *, por ejemplo,

  • extern double const kTimeout; // fine
  • extern NSString* const kImageType; // compile error

Después del análisis anterior y una pequeña interrupción, eventualmente el problema se resuelve agregando la siguiente importación a .h – "Foundation/Foundation.h"

Parece una statement inacabada, probablemente en un archivo de encabezado. Busque “foo” (o lo que sea que el símbolo sea en realidad) en todos los archivos del proyecto, usando ⇧⌘F (Editar ▸ Buscar ▸ Buscar en el proyecto …) en Xcode, y / o examine los encabezados que está incluyendo donde está MeterTable declarado. A veces, el comstackdor se confunde con la ubicación real del error, ya que los archivos de cabecera se importan con frecuencia a otros archivos, por lo que el problema puede manifestarse en varias ubicaciones.

Esto podría no haberse aplicado a esta situación exacta, pero también tuve este error exacto, que fue causado por una mala statement directa. En Objective-C, asegúrate de que tus forward-declares comiencen con el signo @, por ejemplo

 @class MyClass; 

Aquellos de nosotros que todavía estamos en piloto automático de C ++ olvidaremos el @, vemos que XCode ha resaltado la clase como una palabra clave reservada y creemos que todo está bien con el mundo. No lo es.

Significa que tienes un error de syntax. Si pega el código en cuestión, es más fácil depurarlo.

Tuve una situación similar a algunas de las publicaciones anteriores. Escribí una clase de C ++ basada en los ejemplos de la documentación de Audio Queue Services, y tuve este problema de comstackción en un proyecto de prueba. Esta publicación ayudó muchísimo.

Hoy, estoy incorporando la clase C ++ en mi proyecto, y obtuve el error de comstackción de nuevo. En mi caso, también tuve que establecer el tipo (utilizando la ventana “Obtener información”) en sourcecode.cpp.objcpp para la clase object -c que llamaba a mi clase C ++.