Согласен с @Luca Matteis. Они, вероятно, определены там, потому что они актуальны в тот момент кода. Компилятор специально к ним не относится. В частности, они могут быть определены непосредственно перед этой структурой и работать точно так же. Для них нет никакого значения, что они внутри.
Тем не менее, есть одна вещь, на которую следует обратить внимание, они действительны только после , они определены Таким образом, они не могут быть использованы ранее в файле. Это может быть значительным. Например, они могут быть определены по-разному до этого момента. (Это плохая идея, но это возможно.)