C доступ к верхней области вместо глобальной

#c #scope

#c #область

Вопрос:

Вы можете найти мой код и его выходные данные ниже. Какой префикс (или что-то еще) я должен использовать в «SOMETHING» для доступа к j на среднем уровне (j == 2)?

Я пытался

main::j

Но это не сработало.

Код:

 #include <iostream>
int j=3;//global
using std::cout;using std::endl;
int main(){
int j=2;//mid
cout<<"inside general main:n";
cout<<"cout<<j---"<<j<<endl;//prints 2
cout<<"cout<<::j---"<<::j<<endl;//prints 3
cout<<"inside for loop:n";
for(int i=0;i<1;i  ){
    int j=1;//inside
    cout<<"cout<<j---"<<j<<endl;//prints 1
    cout<<"cout<<::j---"<<::j<<endl;//prints 3
    //cout<<"cout<<::j---"<<SOMETHING<<endl;//prints 2
}
return 0;
}
  

Вывод:

 inside general main:
cout<<j---2
cout<<::j---3
inside for loop:
cout<<j---1
cout<<::j---3
  

Комментарии:

1. Одним из решений было бы не затенять ваши переменные в первую очередь, это плохая привычка.

2. Нет способа получить предыдущую область. Используйте разумные имена для ваших переменных, и, надеюсь, этого не произойдет.

3. У некоторых разработчиков / команд есть соглашение об именовании, которое различает имена на основе их области, например, я видел префикс (m_ для члена, s_ для статического, g_ для глобального, t_ для локального потока и т. Д.) Или суффикс (некоторые места используют _ для переменных-членов, некоторые для параметров функции).

4. Я знаю, что это плохая привычка. Я читаю книгу на C , я читал о локальном и глобальном доступе к переменным с тем же именем, но ничего не видел для промежуточных элементов с тем же именем. Мой вопрос чисто образовательный.

5. избегайте _ префикса для переменных-членов. Я слышал, что это было опасно, вероятно, из-за уже _ префиксных символов. Предпочтительнее m_ , например.

Ответ №1:

Нет квалификации, которая ссылается на локальную область.

Просто используйте разные имена.

Комментарии:

1. Не могли бы вы сослаться на мой последний комментарий под вопросом?

2. Может быть, вы имеете в виду «Есть ли способ получить список всех выделенных ячеек памяти этой программой?». Нет.

3. Да, я имел в виду этот вопрос.

4. Хорошо, тогда нет, такого средства нет. Совет: вы можете использовать бесплатные инструменты, такие как AStyle (художественный стиль), для автоматического форматирования вашего кода.