NDK如何在发布时删除Log Debug语句

pt1*_*123 7 c++ debugging android android-ndk

我知道使用proguard你可以从发行版本中删除java Log.d调试语句 /sf/answers/932932241/

但是有没有办法从NDK C/C++代码中删除日志调试语句.

我正在使用define语句在NDK中调用它们

#define  LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) 
Run Code Online (Sandbox Code Playgroud)

Joe*_*oel 10

使用NDEBUG宏.或者你真的可以做#ifdef任何事情.

#ifdef NDEBUG

#define LOGD(...)

#else

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)

#endif
Run Code Online (Sandbox Code Playgroud)

然后为代码:

void f()
{
    LOGD("About to do some stuff");
    doSomeStuff();
}
Run Code Online (Sandbox Code Playgroud)

编译器将看到(粗略 - ANDROID_LOG_DEBUG并且LOG_TAG如果它们是宏,也将替换为它们的值):

void f()
{
    __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,"About to do some stuff");
    doSomeStuff();
}
Run Code Online (Sandbox Code Playgroud)

何时NDEBUG未定义并将看到:

void f()
{
    ;
    doSomeStuff();
}
Run Code Online (Sandbox Code Playgroud)

什么时候NDEBUG定义.