2010-12-03 9 views
10

Reutilizo una biblioteca de C heredada en una aplicación de iOS y en una de Android. Quiero personalizar algunas definiciones de macro (por ejemplo, para el registro). ¿Hay definiciones estándar para verificar (usando #ifdef) si el código se está compilando para iOS o Android/NDK?Cómo determinar el código C compilado para Android/NDK o iOS

+3

favor no use '# ifdef' para esto. Escriba código portátil y ponga problemas específicos de la plataforma en módulos por plataforma con una interfaz común. –

+0

Insertar en el módulo diferente, compilar cada uno usando la ruta de inclusión diferente – qrtt1

+3

Generalmente, pero uno debe equilibrar la magnitud de la diferencia con la conveniencia de mantener organizada la funcionalidad. El uso excesivo de la abstracción puede hacer que el código sea tan ilegible como poco utilizado. Si tuviera un gran bloque de código que fuera idéntico a excepción de una diferencia heredada de linux-vs-bsd en una llamada al sistema Unix, probablemente lo vería con un comentario allí mismo, en lugar de inventar un nuevo concepto personal de Unix portátil y enterrar la implementación en funciones en línea extraídas de algún archivo de encabezado. –

Respuesta

23

__ANDROID__ o ANDROID para Android (compilación con el NDK) y __APPLE__ en las plataformas de Apple (iOS o OSX)

+0

Es ANDROID sin guiones bajos. Gracias. – Miriam

+4

No, es '__ANDROID__' ** con ** guiones bajos. Citando [David Turner] (http://markmail.org/message/5ekhfztchs45lz3n): "Recomendaría definir' __ANDROID__' explícitamente por ahora, debería ser lo único que los usuarios de NDK deberían probar nuevamente ". –

1

debería considerar crear dos proyectos separados para esas plataformas con directorios separados de salida/bin pero código fuente compartido. A continuación, que acaba de establecer algunos definen en las propiedades del proyecto para Android e iOS para que pueda reconocerlo al compilar

Cuestiones relacionadas