none
Реализации cout и cin RRS feed

  • Вопрос

  • Здравствуйте. Появилось у меня желание посмотреть на реализации объектов cout и cin. Нашёл такие строки:

    __PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 istream cin, *_Ptr_cin;
    __PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream cout, *_Ptr_cout;

    единственные знакомые мне обозначение здесь (помимо cout и cin конечно), это имена классов ввода-вывода. Скажите пожалуйста, что значит "__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2" и что это за указатель такие "*_Ptr_cin" и "*_Ptr_cout" ? Спасибо.

    10 января 2015 г. 17:34

Ответы

  • Появилось у меня желание посмотреть на реализации объектов cout и cin.

    Смело :) Для этого Вы выбрали не ту реализацию библиотеки C++. Часть реализации от MS скрыта и поставляется уже в скомпилированном виде. Т.к. разработчиков этой библиотеки, как я понимаю, здесь нет, никто Вам разобраться в ее реализации не поможет.

    По поводу приведенного Вами объявления объектов потоков могу сказать следующее: extern позволяет поместить объявление одного и того же объекта во множество исходных файлов проекта, предотвращая тем самым возможное "беспокойство" редактора связей по поводу многократного определения глобальной переменной. Остальные макросы, судя по всему, могут принимать разные значения в зависимости от используемой в проекте версии библиотеки (статическая, динамическая и проч.).


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    11 января 2015 г. 6:29