buk*_*.wh 1 c++ android android-ndk
我是NDK的新手,但我成功地完成了一些基本的练习,但我想问一些简单的问题(基本上,我理解这意味着什么,但我想确信它是正确的).这是代码,任何人都可以解释每行的含义:
#ifdef __ANDROID__
#define LOG_TAG "MyNative"
#define STRINGIFY(x) #x
#define LOG_TAG __FILE__ ":" STRINGIFY(__MyNative__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
#endif
Run Code Online (Sandbox Code Playgroud)
非常非常感谢你!
它们都是C预处理程序指令.
Run Code Online (Sandbox Code Playgroud)#ifdef __ANDROID__ ... #endif
仅在__ANDROID__定义了预处理程序符号时才会处理此部分.
Run Code Online (Sandbox Code Playgroud)#define LOG_TAG "MyNative"
这定义了一个LOG_TAG扩展为的宏"MyNative".
Run Code Online (Sandbox Code Playgroud)#define STRINGIFY(x) #x
这定义了一个宏STRINGIFY,它接受一个参数x并将其转换为字符串文字#.
Run Code Online (Sandbox Code Playgroud)#define LOG_TAG __FILE__ ":" STRINGIFY(__MyNative__)
这定义了一个宏LOG_TAG,它扩展为三个字符串文字(自动连接在一起).__FILE__是一个内置的宏,它扩展为当前的源文件名,STRINGIFY(__MyNative__)生成"__MyNative__".
Run Code Online (Sandbox Code Playgroud)#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
这些定义了两个接受可变数量参数的宏(...).扩展宏,以便__VA_ARGS__将可变数量的参数替换为逗号分隔列表.__android_log_print()是一个C varargs函数(如printf()),它接受可变数量的args.
| 归档时间: |
|
| 查看次数: |
3211 次 |
| 最近记录: |