Проблема в том, что Emacs проанализирует обе части конструкции #if
#else
. Чтобы получить правильные отступы, вы должны убедиться, что у вас нет несбалансированных скобок или скобок. Конкретно, вы можете переписать следующее:
if (a > 2 ||
#ifdef WIN32
(b < 3))
#else
(b > 3))
#endif
В
if (a > 2 ||
#ifdef WIN32
(b < 3)
#else
(b > 3)
#endif
)