私はコードはこのような何かを見てバグを発見しました:面白いスコープの問題、説明?
char *foo = malloc(SOME_NUM * sizeof(char));
if (!processReturnsTrueOrFalse(foo)) {
free(foo);
char *foo = malloc(SOME_NUM * sizeof(char));
// More stuff, whatever
}
これはコンパイルが、それは私が同じ関数内の2つの変数を定義させて頂くことに奇妙だが、コンパイラがスコープ異なり、それらに表示されます。
この場合、内側のfooと外側のfooを区別するにはどうすればよいですか?コンパイラは、2回目の宣言の前にフリーで、私は外側のfooを解放しようとしていましたが、内側のfooを再宣言すると、エラーが発生しませんでした。
ありがとうございました。おそらくこれはかなり明白な初心者の質問です。
この回答はC++固有のものです。質問にはCとobjective-Cも付いています。 – Trent
真。 Cのソリューションはありますか? Cソリューションは基本的にObjective-Cソリューションもカバーします。範囲を隠してしまえば、何かにアクセスすることは単に不可能なのでしょうか? – Sam
Cソリューションはありません。 Cでは、囲みスコープから隠し変数にアクセスすることはできません。 – Eclipse