2012-04-10 83 views
1

我有一個頭文件header.h,其中變量被定義爲x。從Android代碼定義C宏

的#define變量X

變量x的基礎上

我在交流文件結構體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和程序。 c)是一個JNI代碼,我正在製作一個共享庫.so,並將其加載到Android java代碼中。 現在最近我開始知道我的代碼中的一個錯誤,解決方法是動態地將變量值定義爲x。 現在除了從Android到JNI通過這個值是有辦法,我可以直接在#定義Android的宏java的說MACRODEFINED_FROM_ANDROID語言對C 使得頭文件變成這樣:

#ifdef MACRODEFINED_FROM_ANDROID 
#define variable x 
#elif 
#define variable y 
#endif 

其他的解決辦法是我將創建兩個共享庫,一個是variable = x,另一個是variable = y,並在android代碼中動態加載它。

PLz建議。

RGDS, SAURABH

回答