Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
Решил не захламлять глобальный контекст и использовать С++ способ включения библиотечных файлов (добавляем префикс "c", а постфикс ".h" убираем). Код: plaintext 1. Но функция prinf() стала доступна как в пространстве имен std, так и глобально! Перешел к файлу cstdio и там увидел такое: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Вопрос: как избежать захламления глобального контекста и работать только через пространство имен std? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 14:32 |
|
||
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
GermanV, На самом деле в GCC например есть та же самая проблема. Не смотря на то что это не соответствует стандарту, это сделано для упрощения взаимодействия С и С++ кода. Думаю что придется смириться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 15:11 |
|
||
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
А что, объём глобального контекста ограничен и он может кончиться?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 15:15 |
|
||
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
Дополнение насчет стандартности такого поведения. До С++11 это было нестандартно, но так как мало какие из компиляторов соблюдали, то в С++11 решили привести стандарт к реальности и теперь стандарт требует чтобы хедеры <c...> обязательно объявляли имена в std:: и по желанию в глобальном пространстве. Т.е. описанное загрязнение :: начиная с С++11 - вполне стандартно. С++11, 17.6.2.3the declarations (except for names which are defined as macros in C) are within namespace scope (3.3.5) of the namespace std. It is unspecified whether these names are first declared within the global namespace scope and are then injected into namespace std by explicit using-declarations Здесь обсуждение http://stackoverflow.com/questions/2118422/scope-of-c-libraries-in-c-x-h-vs-cx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 15:33 |
|
||
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
А может я чего-то упустил: можно не подключать всю либу, а для компоновщика как-то сообщить откуда брать функцию? Например, так: Код: plaintext 1. Я бы лучше "точечно" к библиотекам обращался, чем "по- артиллерийски". Вспоминается фраза: одно неловкое движение, и ты- отец :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 16:58 |
|
||
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
GermanV, Дык std::printf(xxx) же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 17:51 |
|
||
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyGermanV, Дык std::printf(xxx) же. Так придется подключать всю библиотеку. А хочется не подключать заголовочный файл (чтобы не было лишних возможностей), а подключить конкретную функцию из этой библиотеки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 18:10 |
|
||
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
GermanVТак придется подключать всю библиотеку. А хочется не подключать заголовочный файл (чтобы не было лишних возможностей), а подключить конкретную функцию из этой библиотеки.Г-н Мейерс в одном из своих советов объясняет, почему вредно тянуться левой рукой к правому уху из-за спины. P.S. Что ж вы, батенька, на WinAPI не пишете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 18:14 |
|
||
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
GermanVА хочется не подключать заголовочный файл (чтобы не было лишних возможностей), а подключить конкретную функцию из этой библиотеки. Кроссплатформенно - нельзя (даже в пределах одного VS существуют разные формы декларации прототипов стандартных функций в зависимости от опций сборки). Просто забудьте эту блажь и включайте весь хедер, как положено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 18:27 |
|
||
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
GermanVчтобы не было лишних возможностей Каких именно и в чем конкретно проявляются проблемы от этого? Вот охота тебе заниматься обезопасиванием себя от иноплатнетного вторжения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2012, 19:09 |
|
||
|
VS2012: Зачем VS захламляет глобальный контекст?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyКроссплатформенно - нельзя (даже в пределах одного VS существуют разные формы декларации прототипов стандартных функций в зависимости от опций сборки). Просто забудьте эту блажь и включайте весь хедер, как положено. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2012, 00:12 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=86&tid=2020547]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 155ms |

| 0 / 0 |
