R4j*_*R4j 3 c++ android android-ndk
我使用此代码段来打开或关闭登录
#define DEBUG 1
#if DEBUG
#include <android/log.h>
#define LOG_TAG "native_log"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
#else
# define LOGD(...) do {} while (0) // do nothing
#endif
// use it
LOGD("%s : %d","value", val);
Run Code Online (Sandbox Code Playgroud)
通过打开DEBUG/关闭标志它工作正常.问题是我想在java端运行时这样做.我想要的是这样的:
// java
private native void nativeSetDebug(boolean flag);
// jni
JNIEXPORT void JNICALL Java_com_my_package_Native_nativeSetDebug(JNIEnv *env, jobject thiz, jboolean flag){
// what should I do in this method?
}
Run Code Online (Sandbox Code Playgroud)
由于在源文件甚至编译之前,c ++中的宏被它们的值替换为预处理器,所以我正在寻找另一种方法.有什么想法吗?
宏文件
extern bool useDebug;
#include <android/log.h>
#define LOG_TAG "native_log"
#define LOGD(...) if(useDebug){__android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)}
Run Code Online (Sandbox Code Playgroud)
C档
bool useDebug = true;
JNIEXPORT void JNICALL Java_com_my_package_Native_nativeSetDebug(JNIEnv *env, jobject thiz, jboolean flag){
useDebug = flag;
Run Code Online (Sandbox Code Playgroud)
}
extern很重要,否则包含标题的每个文件都将定义自己的变量,并且它们将无法正确设置.
| 归档时间: |
|
| 查看次数: |
641 次 |
| 最近记录: |