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

Создание *.dll: для чего нужен компилятору параметр -DBUILD_DLL? (использую MinGW) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлом типа fstream http://www.cyberforum.ru/cpp-beginners/thread1091503.html
Пишем несложный код: fstream file("Test.txt",ios_base::in|ios_base::app); int cnt = 0; while (cnt < 3) { cerr << char(file.get()); cnt++; }
C++ Эмулятор. На С, С++ Здравствуйте уважаемые читатели форума! У меня такой вопрос: (СРАЗУ ПРЕДУПРЕЖДАЮ Я НЕ ОЧЕНЬ ХОРОШО РАЗБИРАЮСЬ ПОКА В ЭТОМ ТАК ЧТО ОЧЕНЬ МНОГОЕ ИЗ МОИХ СЛОВ МОЖЕТ БЫТЬ ЖУТКИМ ....) В качестве... http://www.cyberforum.ru/cpp-beginners/thread1091494.html
C++ Использование стороннего CSP. Шифрование в программе
Снова обращаюсь к гуру программирования. Возникла ещё одна проблема, причём уже давно. Некоторые пользователи жалуются на невозможность использования программы по причине НЕсохранения их данных в...
Я создаю утечки памяти ! C++
Нет, я не хочу похвастаться этим. Я любитель использовать быстрые решение для того чтобы реализовать алгоритм или проверить "чтобы работало", но как известно нет ничего более вечного, чем...
C++ Каким образом идет поиск слов в кавычках? http://www.cyberforum.ru/cpp-beginners/thread1091483.html
Доброго времени суток! Вот вся программа #include <fstream> #include <iostream> #include <string> int main() { std::ofstream ofs("test.txt");
C++ Умножить матрицу 10х10 на вектор из 10 элементов дана матрица:10*10.умножить ее на вектор 10.помогите пожалуйста...очень нужно подробнее

Показать сообщение отдельно
DrOffset
7351 / 4451 / 1009
Регистрация: 30.01.2014
Сообщений: 7,293
19.02.2014, 23:16
Цитата Сообщение от kravam Посмотреть сообщение
да
нет
нет
Если бы все ответы были "да", тогда и вопрос был бы плёвым.
Первого "да" хватит, чтобы понять почему компилятор не в состоянии узнать природу вызываемой функции.
В момент построения кода конкретного модуля у него нет информации об остальных модулях. В некоторых других языках - это не так и С++ часто за это ругают. Но эта архитектура уже существует. И мы идем от нее.

Линковщик работает потом и занимается разрешением ссылок между модулями. Вставляет сервисный код, характерный для заданной платформы. На его этапе уже можно понять что откуда вызывается, но здесь уже поздно. Ведь объектник может быть собран с хитрой оптимизацией, причем оптимизация может быть задана разная для разных объектников, просто так взять и вынуть одну инструкцию и вставить другую линкер не может. Даже без оптимизации не может. Вообще это не принципиально, я просто привел пример того, какие трудности стоят на пути реализации такой возможности в ликере.

Хотя существуют решения, которые потребуют ухода от текущей архитектуры, увеличения времени сборки.
Называется LTCG (Microsoft specific). Наверное твой вопрос разрешится, если задействовать LTCG. Но если разобраться, то это читерство, т.к. после включения LTCG obj-файл содержит уже не машинный код, а некоторое промежуточное представление, с которым может работать компилятор при последующих проходах. Это уже совсем не классический С++, хоть и может давать существенный прирост производительности.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru