2012-01-16 4 views
6

Nell'esaminare il "android-NDK-linux_x86/sorgenti/CXX-stl/gnu-libstdC++/include/memoria" file di intestazione, trovo che questa intestazione include altri file di intestazione STL secondo la bandieraCome attivare lo standard sperimentale "C++ 0X" durante la compilazione di file .cpp in Android-ndk (r7)?

__GXX_EXPERIMENTAL_CXX0X__ 

. Penso che questo flag si riferisca allo standard "C++ 0X" e questo standard potrebbe essere ancora sperimentale in Android-ndk r7. Tuttavia, voglio attivare questo standard C++ nel mio progetto. (Non sono sicuro che lo standard "C++ 0X" sia stato attivato per impostazione predefinita)

Voglio sapere come devo impostare Android-ndk per impostare questo flag quando compilo i file .cpp nel directory "project/jni" di un progetto Android. O come posso attivare lo standard sperimentale "C++ 0X" nella mia applicazione.

Devo specificare il flag utilizzando, ad es. LOCAL_CPPFLAGS e/o APP_CPPFLAGS, nel file "Android.mk"/"Application.mk". (Sto usando "APP_STL: = gnustl_static" nel mio "Application.mk")

Grazie per qualsiasi suggerimento.

Lawrence Tsang

+1

Lo standard C++ 03 esiste nel 2003, probabilmente si intende lo standard C++ 11. –

+0

@Als Secondo bdonlan, intendo lo standard "C++ 0X". Ho cambiato la mia domanda per riflettere questo. – user1129812

risposta

7

C++ 03 non è uno standard sperimentale; è il valore predefinito.

C++ 0X, tuttavia, è uno standard sperimentale. Il suo nome ufficiale è ora impostato come C++ 11, ma l'implementazione è incompleta in GCC (e in qualsiasi altro luogo). Puoi abilitarlo passando a --std=c++0x in GCC. Ricordati di controllare lo feature status page prima di lamentarti che qualcosa non funziona.

+1

'** Puoi abilitarlo passando --std = C++ 0x a GCC **' Ma come potrei passare '** - std = C++ 0x **' al compilatore in un Android-ndk ambiente. Sto usando "ndk-build" e mi aspetto di specificare le opzioni di compilazione attraverso i file "Android.mk"/"Application.mk". – user1129812

+3

L'aggiunta di "LOCAL_CPPFLAGS = -std = C++ 0x" a "Android.mk" funziona. Grazie. – user1129812