Форум программистов, компьютерный форум CyberForum.ru

Повторное подключение. Почему не ограничено автоматически? - C++

Восстановить пароль Регистрация
 
NEW_NAME
1 / 1 / 0
Регистрация: 04.10.2012
Сообщений: 45
21.11.2012, 14:51     Повторное подключение. Почему не ограничено автоматически? #1
Есть разные способы ограничить повторное подключение заголовочных файлов, библиотек. Но неужели нельзя было организовать компиляторы так, чтобы они автоматически отсекали повторные подключения? Отсюда вопрос: в каких-то ситуациях имеет смысл подключать заголовочных файл не один раз? Зачем?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2012, 14:51     Повторное подключение. Почему не ограничено автоматически?
Посмотрите здесь:

C++ повторное вполнение действия
C++ Повторное применение оператора delete
C++ Повторное воспроизведение
Почему C++ выдает Over9000 ошибок при подключение GDI+ C++
Повторное использование кода в C++ C++
C++ Почему delete не устанавливает автоматически указатель в NULL?
C++ Повторное определение вектора
C++ Повторное возбуждение исключения

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.11.2012, 15:17     Повторное подключение. Почему не ограничено автоматически? #2
Затем, что это не подключение чего бы то ни было. Это тупая вставка содержимого файла в то, что будет передаваться компилятору. Конечно, можно вставить несколько раз и всё поломать, если вставлять бездумно.

Затем, что так проще. «Я компилятор. И хотел бы, в идеале, чтобы за меня эту проблему решал программист».

Затем, что есть #pragma once, которая «автоматически отсекает повторные подключения».

Затем, что обратная совместимость и никто не будет менять то, что живёт уже 40 лет, дабы ничего не сломать. Каким бы ужасным оно ни было.

В принципе, можно придумать такой вариант:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int lookup_table_1[] = {
#include "big_data1.dat"
,
#include "big_data2.dat"
,
#include "big_data3.dat"
};
 
int lookup_table_2[] = {
#include "big_data4.dat"
,
#include "big_data2.dat" // внезапно
,
#include "big_data5.dat"
};
Естественно, несколько раз вставлять можно только сырые данные (или сырой код), но никак не определения, так как они не могут повторяться. Да и то это знак, что вы что-то делаете не так.

Не парьте себе мозг. Если что-то можно делать, это вовсе не обязательно делать.
NEW_NAME
1 / 1 / 0
Регистрация: 04.10.2012
Сообщений: 45
21.11.2012, 16:07  [ТС]     Повторное подключение. Почему не ограничено автоматически? #3
Затем, что так проще. «Я компилятор. И хотел бы, в идеале, чтобы за меня эту проблему решал программист».
Ну это ж не логично. Тем более инклудами занимается препроцессор.
Затем, что обратная совместимость и никто не будет менять то, что живёт уже 40 лет, дабы ничего не сломать. Каким бы ужасным оно ни было.
Вот это ответ.
В принципе, можно придумать такой вариант:
Вот и пример. Супер)
Не парьте себе мозг. Если что-то можно делать, это вовсе не обязательно делать.
Ну почему? Знание лучше, чем не знание.

Вообще спасибо.
Yandex
Объявления
21.11.2012, 16:07     Повторное подключение. Почему не ограничено автоматически?
Ответ Создать тему
Опции темы

Текущее время: 05:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru