2012-06-12 17 views
8

Cuando agrego #define a main.cpp o a uno de mis encabezados desde main.cpp, no parece estar definido en otros archivos.Android NDK #define Problemas

Por ejemplo, en main.cpp yo podría hacer algo como:

#define TEST_FOO 1 

Luego, en uno de mis otros archivos, por ejemplo secondfile.cpp, TEST_FOO se ignora como si nunca se definió:

#if TEST_FOO 
// do something <- this never gets reached 
#endif 

Incluso si en el archivo Android.mk coloco secondfile.cpp después main.cpp:

LOCAL_SRC_FILES := main.cpp \ 
        secondfile.cpp 

¿Hay alguna forma de #definir valores en Android NDK dentro del código real?

Respuesta

16

Eso es correcto. El compilador solo conoce un archivo fuente a la vez. Cuando compila secondfile.cpp, se ha olvidado por completo de cualquier cosa que haya definido en main.cpp.

Si desea que un archivo #define sea visible en todos sus archivos fuente, debe colocarlo en un encabezado incluido en todos sus archivos. O bien, pásalo en la línea de comando; usted puede hacer esto mediante la adición de algo como esto a su Android.mk:

LOCAL_CPPFLAGS := -DTEST_FOO=1 
+1

El uso de bibliotecas múltiples 'APP_CPPFLAGS + = -DTEST_FOO = 1' en Application.mk también funciona. – MD1948

0

Póngalo en el archivo de cabecera e incluir el archivo de cabecera de cada archivo .c en el que desea que se define.