Контролировать доступ к глобальной области C ++? - PullRequest
2 голосов
/ 01 декабря 2011

Мне иногда приходится преобразовывать зрелый исходный код в классы.Проблема, которая иногда возникает, состоит в том, что некоторые функции совместно используют глобальные переменные.Обычно это трудно найти.

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

РЕДАКТИРОВАТЬ:

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

1 Ответ

2 голосов
/ 01 декабря 2011

Вы можете поместить все глобальные переменные в область действия namespace (может быть больше 1).После этого компилятор будет жаловаться на экс-глобальные переменные.Просто зайдите и исправьте соответственно.

Редактировать : Для нового вопроса Нет нет средства от компилятора, которое выделит глобальные переменные.Кроме того, поиск глобальных переменных прост и не требует пересмотра кода или реструктуризации.Это механическая работа.Как только вы найдете это, заключите его в область действия namespace.например,

int g_value;

преобразуется в,

namespace Globals {
  int g_value;
};
...