Небольшое дополнение к ответу @ Bathsheba'a: если вы хотите отладить такую проблему препроцессора, может быть полезно выделить интересную часть в отдельном файле:
// test.cpp
#define A 0
#define B A+1
#define C 1-B
C;
и отобразить файлпосле предварительной обработки, например, через
g++ -E test.cpp
, что дает (на моей машине)
# 1 "test.cpp"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.cpp"
1-0 +1;
Обратите внимание, что важно удалить включенные здесь, например, <iostream>
делаетвывод довольно непригодный.