Должны ли инструкции препроцессора находиться в начале строки?

Некоторое время назад я обнаружил (довольно древний) компилятор 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
}

Стандартизован ли способ отступа кода препроцессора, то есть, независимо от того, как я отступаю, он всегда будет работать одинаково?

18
задан Jonathan Leffler 11 January 2015 в 00:34
поделиться