小编Mar*_*ick的帖子

符号“M”没有定义为 C/C++ 预处理器宏

为什么 GDB 在以下示例中不打印宏的值?

\n\n
\xe2\x9d\xaf cat sample.c\n#include <stdio.h>\n\n#define M 42\n\nint main(int argc, const char **argv)\n{\n  printf("M: %d\\n", M);\n  return 0;\n}\n\n\xe2\x9d\xaf rm -f sample\n\xe2\x9d\xaf gcc -Wall -g3 -ggdb -gdwarf-2 sample.c -o sample\n\xe2\x9d\xaf gdb sample\n\ngdb> break main\ngdb> run\ngdb> info macro M\n  The symbol `M\' has no definition as a C/C++ preprocessor macro\n  at <user-defined>:-1\ngdb> continue\n  Continuing.\n  M: 42\n
Run Code Online (Sandbox Code Playgroud)\n\n

谢谢!

\n\n
\xe2\x9d\xaf gcc --version\nApple LLVM version 7.3.0 (clang-703.0.29)\n\xe2\x9d\xaf gdb --version\nGNU gdb (GDB) 7.10.1\n
Run Code Online (Sandbox Code Playgroud)\n

c gcc gdb clang

6
推荐指数
1
解决办法
1059
查看次数

标签 统计

c ×1

clang ×1

gcc ×1

gdb ×1