Почему GDB не выводит значение макроса в следующем примере?Символ `M 'не имеет определения как макрос препроцессора C/C++
❯ cat sample.c
#include <stdio.h>
#define M 42
int main(int argc, const char **argv)
{
printf("M: %d\n", M);
return 0;
}
❯ rm -f sample
❯ gcc -Wall -g3 -ggdb -gdwarf-2 sample.c -o sample
❯ gdb sample
gdb> break main
gdb> run
gdb> info macro M
The symbol `M' has no definition as a C/C++ preprocessor macro
at <user-defined>:-1
gdb> continue
Continuing.
M: 42
Спасибо!
❯ gcc --version
Apple LLVM version 7.3.0 (clang-703.0.29)
❯ gdb --version
GNU gdb (GDB) 7.10.1
Просто спрашивайте, если вы удалите '-O2', это имеет значение? –
@SouravGhosh no effect = ( – itsnikolay
В [tag: c] он должен быть 'int main (int argc, char ** argv)' '' argv' модифицируется, поэтому no 'const'. –