vgo*_*anz 13 c++ java-native-interface logging android c-preprocessor
我想制作一个错误日志,它会引入问题所使用的文件和行.但我没有找到一个很好的参考.所有代码都使用JNI,C++方面.
此尝试失败:
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , LOG_TAG,"%s %s %s",__VA_ARGS__, __FILE__, __LINE__)
Run Code Online (Sandbox Code Playgroud)
这个只显示msg,没有文件和行
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , LOG_TAG,__VA_ARGS__, __FILE__, __LINE__)
Run Code Online (Sandbox Code Playgroud)
我怎么能清楚地打印所有信息?可以只打印一些参数__VA_ARGS__,像__VA_NARG__?这类事情的额外信息或有用的参考?
mbr*_*non 16
非常有趣和有用的问题!我发现这个解决方案可能不是最简单的,但对我有用:
#define LOGE(x...) do { \
char buf[512]; \
sprintf(buf, x); \
__android_log_print(ANDROID_LOG_ERROR,"TAG", "%s | %s:%i", buf, __FILE__, __LINE__); \
} while (0)
Run Code Online (Sandbox Code Playgroud)
这一行:
LOGE("Test: %i", 42)
Run Code Online (Sandbox Code Playgroud)
记录以下内容:
TAG Test: 42 | path/to/file.cpp:line
Run Code Online (Sandbox Code Playgroud)
512如果你打算记录更长的东西,请注意缓冲区的任意长度!
希望这可以帮助!