8

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

たとえば、main.cppでは、次のようなことを行うことができます。

#define TEST_FOO 1

次に、他のファイルの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

実際のコード内でAndroidNDKの値を#defineする方法はありますか?

4

2 に答える 2

16

それは正しいです。コンパイラは、一度に1つのソースファイルしか認識しません。をコンパイルするsecondfile.cppと、で定義したものを完全に忘れてしまいますmain.cpp

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

LOCAL_CPPFLAGS := -DTEST_FOO=1
于 2012-06-12T13:00:29.970 に答える
0

それをヘッダーファイルに入れ、ヘッダーファイルを定義するすべての.cファイルにインクルードします。

于 2012-06-12T13:00:52.873 に答える