реклама на сайте
подробности

 
 
> Снова к вопросу о разбухании кода arm-gcc
glonium
сообщение May 30 2012, 06:22
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 27-05-11
Пользователь №: 65 303



Добрый день господа форумчане!
Настроил среду разработки Eclipse как сказано тут http://makesystem.net/?p=988
Использую toolchain Codebench Lite!
Написал простенький список (приложен ниже) и скомпилировал проект когда посмотрел на размер кода был немного обескуражен!
Размер кода стал равен 87384 Байт!
В оптимизаторе поставил генерировать отдельные секции и в линкере удалять неиспользуемые секции, но не помогает!
В чём тут может быть дело?

PS Может поменять компилятор, вернее версию??? Что то где-то слышал что помогает!
Вот только на какую менять???

Сообщение отредактировал glonium - May 30 2012, 06:17
Прикрепленные файлы
Прикрепленный файл  list.rar ( 1.64 килобайт ) Кол-во скачиваний: 21
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
glonium
сообщение Jun 10 2012, 09:56
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 27-05-11
Пользователь №: 65 303



так то так но вот предположим у нас есть список объектов базоаого класса в виде указателей на них, при помощи dynamic_cast<*Iface> можно определить поддерживает ли данный инстанс интерфейс Iface и заодно преобразовать к классу интерфейса, если не поддерживает dynamic_cast вернёт NULL!

Конечно можно поступить и менее красиво, держать в классе флаги поддержки интерфейса и по их значениям кастовать!

Или ещё вариант но тоже менее красивый завести виртуальные функции которые кастуют к конкретному интерфейсу!
Go to the top of the page
 
+Quote Post
neiver
сообщение Jun 11 2012, 11:52
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



Цитата(glonium @ Jun 10 2012, 13:56) *
так то так но вот предположим у нас есть список объектов базоаого класса в виде указателей на них, при помощи dynamic_cast<*Iface> можно определить поддерживает ли данный инстанс интерфейс Iface и заодно преобразовать к классу интерфейса, если не поддерживает dynamic_cast вернёт NULL!

Конечно можно поступить и менее красиво, держать в классе флаги поддержки интерфейса и по их значениям кастовать!

Или ещё вариант но тоже менее красивый завести виртуальные функции которые кастуют к конкретному интерфейсу!

"флаги поддержки интерфейса" в классе - это призанак "моей первой программы на С++", часто появляются, когда люди много писали на простом Си.
Опрос возможностей с помощью dynamic_cast - это уже "вторая программа на С++" - осознание недостаатков первой.
Вариант с виртуальными функциями чуть лучше, но всё равно опрос возможностей или попытка узнать конкретный тип объекта почти всегда являются признаками неудачного проектирования. Этот самый тип объекта просто не нужно терять, чтоб потом не нужно было его динамически узнавать. Единственное адекватное применение опроса типа или возможностей объекта, dynamic_cast в частности и RTTI вообще - это ИМХО разработка своей библиотеки сериализации.
Рекомендую по этому по этому вопросу почитать книжку: Стефан К. Дьюхэрст "Скользкие места С++". Там очень хорошо этот вопрос расписан.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- glonium   Снова к вопросу о разбухании кода arm-gcc   May 30 2012, 06:22
- - Непомнящий Евгений   Ну смотри - ты приложил хидер с шаблоном. Шаблон п...   May 30 2012, 06:52
- - glonium   Прошу прошения что то не подумал выложить проект...   May 30 2012, 08:04
- - Непомнящий Евгений   дык а map ты не пытался сгенерить? Сгенери, посмот...   May 30 2012, 08:09
- - glonium   Да сгенерил только ничего не понял из него в нём к...   May 30 2012, 09:12
|- - Сергей Борщ   Насчет исключений не подскажу, полагаю, что поддер...   May 30 2012, 09:47
- - glonium   Спасибо за ответ! Интересное предложение. А со...   May 30 2012, 13:06
|- - Сергей Борщ   QUOTE (glonium @ May 30 2012, 16:06) А со...   May 30 2012, 13:21
- - glonium   Поэкспериментировав с перегрузкой операторов new и...   Jun 1 2012, 13:58
|- - Сергей Борщ   А если так: CODE#include <new> ..... */ in...   Jun 1 2012, 14:47
- - glonium   ЦитатаА если так: CODE #include <new> ..... ...   Jun 1 2012, 15:00
|- - _Артём_   Цитата(glonium @ Jun 1 2012, 18:00) Так т...   Jun 1 2012, 15:16
- - glonium   ЦитатаP.S. И какой компилятор?. Использую CodeBenc...   Jun 1 2012, 15:45
|- - AHTOXA   Чтобы не подтягивались исключения, надо компилиров...   Jun 1 2012, 16:13
- - glonium   ЦитатаЧтобы не подтягивались исключения, надо комп...   Jun 1 2012, 16:37
|- - AHTOXA   Цитата(glonium @ Jun 1 2012, 22:37) PS ви...   Jun 1 2012, 17:38
- - glonium   ЦитатаПосмотрите map-файл, и увидите, что это всё-...   Jun 1 2012, 22:25
|- - AHTOXA   А чего там уметь-то? Смотрите, видите "eh_exc...   Jun 2 2012, 14:33
- - glonium   Да очень жаль конечно что всё это весит много...   Jun 8 2012, 12:12
|- - _Артём_   Цитата(glonium @ Jun 8 2012, 15:12) В про...   Jun 8 2012, 19:21
|- - alx2   Цитата(glonium @ Jun 8 2012, 17:12) Народ...   Jun 11 2012, 10:38
- - glonium   Спасибо за книгу интересные моменты обсуждаются...   Jun 16 2012, 17:13
- - neiver   Вот! Именно для этого есть принципы SOLID. Оче...   Jun 16 2012, 20:02
- - glonium   Это конечно всё понятно принципы SOLID! Вот то...   Jun 21 2012, 06:26


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 01:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016