Некоторое время назад я обнаружил (довольно древний) компилятор C, который сканировал макросы таким образом (псевдокод):
if line.startswith("#include") or line.startswith("#define"):
...
.. Какой вид поднял вопрос для меня, где макросы должны быть размещены в начале строки так:
void stuff()
{
#if defined(WIN32) || defined(_WIN32)
...
#else
#if defined(__GNUC__)
...
#else
...
#endif
#endif
}
Или, скорее, так (как это делается для улучшения читаемости):
void stuff()
{
#if defined(WIN32) || defined(_WIN32)
...
#else
# if defined(__GNUC__)
...
# else
...
# endif
#endif
}
Можно ли унифицировать стандартный код препроцессора, то есть независимо от того, как я его отступ, он всегда будет работать одинаково?