変数が x と定義されているヘッダー ファイル header.h があります。
#変数 X を定義
変数 x に基づいて、ac ファイルに構造 y があります - program.c :
#include header.h
Structure y
{
int val[variable];
.
.
//other elements
}
void func()
{
//here instance of y->val[variable] is used heavily
}
この c コード (header.h および program.c) は JNI コードであり、共有 lib .so を作成して Android Java コードにロードしています。最近、コードのバグを知るようになりました。解決策は、変数値を x に動的に定義することです。この値を ANdroid から JNI に渡す以外に、Android Java でマクロを直接 #define できる方法があります。C の MACRODEFINED_FROM_ANDROID 言語と言うと、ヘッダー ファイルは次のようになります。
#ifdef MACRODEFINED_FROM_ANDROID
#define variable x
#elif
#define variable y
#endif
他の解決策は、変数 = x と変数 = y を持つ 2 つの共有ライブラリを作成し、それを Android コードに動的にロードすることです。
PLzが提案します。
Rgds、サウラブ