Cプログラミング言語では、変数はコードブロックの先頭でのみ定義でき、変数は宣言されたブロックのスコープを持つことになるというのが私の理解です.それを念頭に置いて、私はそれが次の例のように、人為的に新しいスコープを作成することは悪い習慣と見なされます。
void foo()
{
... Do some stuff ...
if(TRUE)
{
char a;
int b;
... Do some more stuff ...
}
... Do even more stuff ...
}
マクロ定義で TRUE が 1 に設定されていると仮定すると、このコードは「優れたコード」と見なされますか?それとも、経験豊富なプログラマーが考えただけでうんざりするのでしょうか?
ご意見ありがとうございます。
編集:いくつかの回答に応えて、私が扱っているコードは、かなり古いレガシーシステムで動作する必要があります。C99 を想定して動作するのはよいことですが、実際に C99 を使用できるかどうかは保証できません。