わかりましたので、私はこのコードを持っていますが、それは良いプログラミング手法ではないことを知っています. 私はそれが何と呼ばれているか忘れました。
int main()
{
int variable;
{
int variable;
}
}
それはローカル名前空間か何かですか?そのようなことをするための正しい用語を思い出せません。
わかりましたので、私はこのコードを持っていますが、それは良いプログラミング手法ではないことを知っています. 私はそれが何と呼ばれているか忘れました。
int main()
{
int variable;
{
int variable;
}
}
それはローカル名前空間か何かですか?そのようなことをするための正しい用語を思い出せません。
これ{ ... }
は、ネストされたスコープを作成するブロックまたは複合ステートメントです。(それは ではありません。)namespace
外側のスコープの宣言と同じ名前を持つ (したがって非表示の) 内側のスコープの宣言のこの特定のケースは、シャドウイングと呼ばれることがあります。
g++ はこれについて警告できます。マニュアルの引用:
`-Wshadow'
Warn whenever a local variable or type declaration shadows another
variable, parameter, type, or class member (in C++), or whenever a
built-in function is shadowed. Note that in C++, the compiler will
not warn if a local variable shadows a struct/class/enum, but will
warn if it shadows an explicit typedef.
(Adam Rosenfield がコメントで指摘しているように、 、、または-Wshadow
によって有効化されていません。明示的に有効化する必要があります。)-Wall
-Wextra
-pedantic
あなたが言及しているのは、変数の隠蔽または変数のシャドーイングだと思います。外側のスコープと同じ名前で内側のスコープで変数を宣言することにより、内側のスコープから外側の変数を隠しています。明らかに、より複雑なコードでは、これは混乱を招く可能性があります。
既存の変数をシャドーイングしています。これは良いプログラミング方法ではありません。
興味があるので、Java はそれを禁止しています。
これは単に変数のスコープと呼ばれます。c では、同じ変数名の変数を定義できます。
私はそれをスコープと呼んでいます。他の方もそう呼んでいると思います。