e5348.cpp

宣言を隠す宣言(2)

/* C:e5348: 宣言が 変数 "***" (宣言 at line ***) を隠します */

char* func(int arg) { char *buf = NULL; if(arg) { char *buf = new char[arg]; } return buf; }
解説 例では代入のみしたかった所を再宣言して外のスコープの宣言を隠してしまっています。 例のようなバグでは無いケースでも同名の変数で外側のスコープの変数を隠すと、 保守性の低下につながるため、避けるべきです。