当我在android原生应用程序上使用gdb debug时,我总是无法使用以下命令获取宏值:
(gdb) info macro ERROR_IO
The symbol `ERROR_IO' has no definition as a C/C++ preprocessor macro
at <user-defined>:-1
源代码中ERROR_IO的定义如下:
namespace android {
enum {
MEDIA_ERROR_BASE = -1000,
ERROR_ALREADY_CONNECTED = MEDIA_ERROR_BASE,
ERROR_NOT_CONNECTED = MEDIA_ERROR_BASE - 1,
ERROR_UNKNOWN_HOST = MEDIA_ERROR_BASE - 2,
ERROR_CANNOT_CONNECT = MEDIA_ERROR_BASE - 3,
ERROR_IO = MEDIA_ERROR_BASE - 4,
ERROR_CONNECTION_LOST = MEDIA_ERROR_BASE - 5,
这意味着该值应为-1004。但命令工作正常:
(gdb) p ERROR_IO+0
$5 = -1004
这是否意味着定义不正确?
答案 0 :(得分:1)
ERROR_IO
不是宏,它是枚举常量。因此,info macro
无法展示它。
仅供参考,您可以获得与+0' using the
/ d`修饰符相同的效果:
(gdb) p/d ERROR_IO