Как и вы, я еще не подумал о лучшем способе отступа, но нашел более чем в одном месте этот альтернативный отступ, в котором знак # всегда помещается в первый столбец, а только ключевое слово имеет отступ:
#ifdef __WIN32__
# include <pansen_win32>
#else
# include <..>
#endif
В Visual Studio, когда вы вводите # в качестве первого символа, он всегда переносит отступ влево, поэтому кажется, что MS либо предпочитает никогда не делать отступы для операторов препроцессора, либо использует вышеуказанный формат.
Большая проблема возникает, когда у вас смешаны непропроцессорные и препроцессорные операторы и применен отступ. Трудно сделать код, который выглядит хорошо, независимо от того, какой вариант:
опция (а)
for (...)
{
if (foo)
{
if (bar)
{
#ifdef __WIN32__
c = GetTickCount();
#else
c = clock();
#endif
}
}
}
опция (б)
for (...)
{
if (foo)
{
if (bar)
{
#ifdef __WIN32__
c = GetTickCount();
#else
c = clock();
#endif
}
}
}
опция (с)
for (...)
{
if (foo)
{
if (bar)
{
# ifdef __WIN32__
c = GetTickCount();
# else
c = clock();
# endif
}
}
}
На этом этапе это становится вопросом личного вкуса, как и многие другие стили отступов.