2012-06-12 8 views
8

#defineをmain.cppまたはmain.cppから呼び出されたヘッダに追加すると、他のファイルで定義されていないようです。例えばAndroid NDK #defineの問題

は、私のような何かするかもしれないmain.cppにに:それは定義されていなかったかのように私の他のファイルのいずれかに続いて

#define TEST_FOO 1 

を、例えばsecondfile.cppため、TEST_FOOは無視されます。

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

Android.mkファイルに私はmain.cppに後secondfile.cppを置いた場合でも:

LOCAL_SRC_FILES := main.cpp \ 
        secondfile.cpp 

実際のコードの中にAndroid NDKの値を#defineする方法はありますか?

答えて

16

これは間違いありません。コンパイラは一度に1つのソースファイルしか知りません。 secondfile.cppをコンパイルすると、main.cppに定義されていることを完全に忘れてしまいます。

すべてのソースファイルに#defineが表示されるようにするには、そのファイルをすべてのファイルに含まれるヘッダーに挿入する必要があります。または、コマンドラインで渡します。あなたのAndroid.mkにこのようなものを追加することによってこれを行うことができます。

LOCAL_CPPFLAGS := -DTEST_FOO=1 
+1

Application.mkで複数のライブラリ 'APP_CPPFLAGS + = -DTEST_FOO = 1'を使用すると、同様に動作します。 – MD1948

0

ヘッダファイルの中に入れて、あなたはそれが定義されることにしたいすべての.cファイルのヘッダーファイルが含まれています。