2012-06-12 18 views
8

Quando aggiungo #define a main.cpp oa uno dei miei header richiamati da main.cpp, non sembra essere definito in altri file.Android NDK #define Problemi

Per esempio, in main.cpp potrei fare qualcosa di simile:

#define TEST_FOO 1 

Poi in uno dei miei altri file, ad esempio secondfile.cpp, TEST_FOO viene ignorato come se non è mai stato definito:

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

Anche se nel file Android.mk ho posto secondfile.cpp dopo main.cpp:

LOCAL_SRC_FILES := main.cpp \ 
        secondfile.cpp 

Esiste un modo per # definire i valori in NDK Android all'interno del codice effettivo?

risposta

16

Ciò è corretto. Il compilatore conosce solo un file sorgente alla volta. Quando compili secondfile.cpp, si è completamente dimenticato di qualsiasi cosa tu abbia definito in main.cpp.

Se si desidera che uno #define sia visibile in tutti i file di origine, è necessario inserirlo in un'intestazione che è inclusa in tutti i file. Oppure, passalo sulla riga di comando; si può fare questo con l'aggiunta di qualcosa di simile al tuo Android.mk:

LOCAL_CPPFLAGS := -DTEST_FOO=1 
+1

L'utilizzo di più librerie 'APP_CPPFLAGS + = -DTEST_FOO = 1' in Application.mk funziona ugualmente. – MD1948

0

Mettilo nel file di intestazione e includere il file di intestazione in ogni file .c dove si desidera da definire.