#visual-c #namespaces #turbo-c
#visual-c #пространства имен #turbo-c
Вопрос:
Я новичок в программировании на C , и мы используем Turbo C (старую IDE) для компиляции наших программ. Проблема в том, что в Turbo C мы никогда не используем пространства имен или даже std::cout во время программирования. Мы просто вводим cout<<…. для вывода данных.
Недавно я начал использовать Visual C 2010 для написания своих программ, и мы предположительно должны использовать «using namespace std» или «std::» здесь. Но я получал выходные данные, даже когда использовал только cout<<….. и никаких «using namespace std» (компилятор показал ошибку, но получил выходные данные).
Поэтому я не понимаю использования пространств имен. Может ли кто-нибудь мне помочь?
С уважением!
Ответ №1:
Пространства имен просто позволяют программисту избегать конфликтов именования конструкций. Таким образом, я могу использовать несколько библиотек, не беспокоясь о том, что их классы будут иметь одинаковые имена. Java делает нечто подобное с пакетами, и C # делает нечто подобное, что они тоже называют пространствами имен.
using namespace
Синтаксис просто означает, что компилятор должен искать в этом пространстве имен все, что он не может найти, объявленное в текущей области видимости.
Если вас не заставляют использовать полное std::
имя или using namespace
синтаксис, то, скорее всего, что-то в вашей программе уже включает это, возможно, в #include
редактируемом файле.
Ответ №2:
Очевидно, вы всегда использовали (предварительно скомпилированный) (заголовок) include, который содержал «использование пространства имен std»; Стандарт ANSI C требует, чтобы стандартная библиотека находилась (и всегда была) в пространстве имен std
Комментарии:
1. Нет, компилятор просто настолько старый (около 1993 года для Turbo C 3.0), так что он является предстандартным. Все находится в глобальном пространстве имен. Это пережиток.
2. Что .. тогда у них был STL? Почему они не сказали мне раньше 🙂
Ответ №3:
Пространства имен полезны при определении того, какой класс использовать. Допустим, в вашей программе есть класс с именем «Sample». У вас также есть одна или несколько библиотек DLL, которые определили класс с именем «Sample».
Когда вы создаете новый экземпляр «Sample», как он узнает, какую реализацию использовать? Вы используете пространство имен для различения типа, который должен быть создан.