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

[Задача] Объясните результат исполнения программы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ помогите плиз написать программу, которая будет парсить XML по заданным условиям http://www.cyberforum.ru/cpp/thread363924.html
Пользователь запускает программу, получает диалог вида "Path to XML: " задает путь до файла, "Print files, 1. Video 2. Audio" пользователь нажимает нужную цифру и Enter " Stream Size " пользователь вводит критерий поиска > или < (x) x - процентов.
C++ DLL Подкиньте какую нибудь инфу про DLL. Как создавать, подключать и тд. Заранее спс. http://www.cyberforum.ru/cpp/thread363803.html
C++ Быстрая прорисовка виртуального окна в реальном времени
Описание задачи: Есть приложение работающее в реальном времени и требующее обновление области экрана "попиксельно" со скоростью не хуже чем 24 раза в секунду. Область экрана имеет размеры 1024 *300. Работа идет след образом: Сначала изображение рисуется попиксельно в виртуальном окне а затем с помощью BilBlt выводится на форму. Как рисуется изображение в виртуальном окне: ...
C++ Помогите решить конкретную задачу связанную с шаблонами
Такая задача: есть три класса, один простой, другой шаблонный, а третий - интерфейсный. Простой класс и шаблонный - наследуются от интерфейса, и получают его в своё распоряжение. Но простой класс юзает интерфейс одним способом, а шаблонный - другим. Как грамотно специализировать методы интерфейса для каждого класса? 1. TInterface<клиент> Интерфейс. Имеет кучу методов с дефолтными...
C++ Связать Matlab и visual studio 2010 http://www.cyberforum.ru/cpp/thread362579.html
Необходимо подключить библиотеки matlab к visual studio в c++. Проблема в том что я даже описания найти не могу в каких библиотеках матлаба какие функции находятся. Может кто-нибудь помочь?
C++ Help Me Gps Navigator Помогите с прогой GPS NAVIGATOR хотябы сделать 1 маршрут от а до б.... все советы учту есть сpp код ..... #include <iostream> #include <iomanip> #include <queue> #include <string> #include <math.h> #include <ctime> using namespace std; подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17296 / 5544 / 347
Регистрация: 30.03.2009
Сообщений: 15,091
Записей в блоге: 26
11.10.2011, 10:43  [ТС]     [Задача] Объясните результат исполнения программы
объяснение
Всё растёт из того, что стандарт Си++ требует того, чтобы inline-функции были multiply defined. Об этом я пояснял в Зачем нужен inline посты 6 и 11. Метод функции, описанный внутри тела класса, всегда является inline, даже если явно это не написано. gcc под системами с поддержкой elf'а реализует это свойство через weak-символы. В данном примере в первом файле мы имеем метод или функцию, определённую как weak, а во втором файле - метод или функцию с тем же манглированным именем, но уже честный global. Итого на линковке получается, что при разрешении ссылок global всегда перебивает weak

С нуля понять что такое weak несколько сложно, в своё время пояснял на более-менее живом примере: http://www.cyberforum.ru/cpp-experts/thread46472.html


Добавлено через 5 минут
Как-то сумбурно пояснил, но для доходчивого пояснения надо рассказать про слишком многие вещи

Добавлено через 4 минуты
В догонку к пояснению
gcc через примерно такой же способ реализует шаблоны. Все шаблонные функции и переменные являются weak'ами, а потому когда они цепляются из инклюдов, то в каждом модуле получается функция с одним и тем же именем. Но за счёт weak'а на линковке отбрасывается всё, кроме одного экземпляра. А вот если есть специализация, то она строится как global, а потому перебивает все weak'и. И две специализации уже сделать нельзя, потому как два global'а уже конфликтуют друг с другом


Добавлено через 10 часов 25 минут
Совсем забыл, что про inline я уже как-то рассказывал. См. Неочевидные ответы на простые вопросы раздел 7.2
 
Текущее время: 16:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru