История изменений
Исправление kawaii_neko, (текущая версия) :
Существует ли способ вернуть имени NUM восьмерку?
Только #define NUM 8. Макроподстановки происходят в момент использования, а не в момент объявления. Собственно, у тебя вообще полная фигня происходит, gcc -E тебе в помощь:
#define NUM 8
num is NUM
#ifdef NUM
# define pre_NUM NUM
# undef NUM
#endif
pre num is pre_NUM
#define NUM 4
pre num is pre_NUM
#undef NUM
#if defined pre_NUM
# define NUM pre_NUM
# undef pre_NUM
#endif
$ gcc -E /tmp/x.c
# 1 "/tmp/x.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "/tmp/x.c"
num is 8
pre num is NUM
pre num is 4
Исходная версия kawaii_neko, :
Существует ли способ вернуть имени NUM восьмерку?
Только #define NUM 8. Макроподстановки происходят в момент использования, а не в момент объявления. Собственно, у тебя вообще полная фигня происходит, gcc -E тебе в помощь:
#define NUM 8
num is NUM
#ifdef NUM
# define pre_NUM NUM
# undef NUM
#endif
pre num is pre_NUM
#define NUM 4
pre num is pre_NUM
#undef NUM
#if defined pre_NUM
# define NUM pre_NUM
# undef pre_NUM
#endif
gcc -E /tmp/x.c
$ gcc -E /tmp/x.c
# 1 "/tmp/x.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "/tmp/x.c"
num is 8
pre num is NUM
pre num is 4