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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Динамический массив структур, Создание / удаление
Палыч
сообщение May 6 2009, 09:07
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(YChebisheva @ May 6 2009, 11:28) *
или там выравнивание?
Выравнивание. Обычно его можно уменьшить с потерей скорости доступа, но не на всех платформах.
Go to the top of the page
 
+Quote Post
Злодей
сообщение May 6 2009, 09:50
Сообщение #17


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

Группа: Участник
Сообщений: 149
Регистрация: 29-04-08
Из: Петербург
Пользователь №: 37 142



Здесь сказано:
Цитата
Размер структуры выравнивается до размера, кратному размеру его максимального элемента.


Сообщение отредактировал Злодей - May 6 2009, 09:53
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 6 2009, 10:25
Сообщение #18


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Если мы(Вы) имеем дело с С99 и gnu99, можно смело отменять выравнивание и пользоваться типами uint_fast**_t . Имхо, вручную проконтролировать оптимальное выравнивание гораздо лучше, чем потом носиться с прагмами и ком.строкой от компилера к компилеру.


Тогда

Цитата(Палыч @ May 6 2009, 12:07) *
Выравнивание. Обычно его можно уменьшить с потерей скорости доступа, но не на всех платформах.


приобретет другой смысл, а именно: выравнивание на разных платформах будет разным, без потери скорости доступа.

Разумеется, для ввода/вывода за пределы системы, надо придерживаться детерминированных размеров, т.е. применять типы uint_**_t
Go to the top of the page
 
+Quote Post
YChebisheva
сообщение May 6 2009, 10:47
Сообщение #19


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 9-01-09
Пользователь №: 43 070



А как определить, какой у меня компилятор, если пишу в Cross Works для мк LPC2214?
И типов, начинающихся на uint_fast не нашла sad.gif

Сообщение отредактировал YChebisheva - May 6 2009, 10:50
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 6 2009, 10:54
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(_Pasha @ May 6 2009, 13:25) *
Если мы(Вы) имеем дело с С99 и gnu99, можно смело отменять выравнивание и пользоваться типами uint_fast**_t . Имхо, вручную проконтролировать оптимальное выравнивание гораздо лучше, чем потом носиться с прагмами и ком.строкой от компилера к компилеру.

В огороде бузина, ну а дядька соответственно в Киеве. Паковка/не паковка структур не зависит от использования в структурах свежих С99 типов входящих в нее переменных. Любую мысль следует выражать максимально прямо, даже если для этого pragma требуется sad.gif. fast, least зачастую очень странно интерпретируются компиляторами - получал в практически одинаковых условиях и 8 и 32bit переменные sad.gif. На данный момент предпочитаю создавать свои собственные типы и явно переопределять их в зависимости от платформы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
YChebisheva
сообщение May 6 2009, 12:04
Сообщение #21


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 9-01-09
Пользователь №: 43 070



с типами разобралась.
А может лучше объявить всю структуру как packed?

Сообщение отредактировал YChebisheva - May 6 2009, 12:08
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 6 2009, 12:09
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(YChebisheva @ May 6 2009, 14:56) *
А как определить, какой у меня компилятор, если пишу в Cross Works для мк LPC2214?

Это сложно, поскольку это еще зависит от географических координат Вашего местоположения, возраста,.... А если серьезно, то посмотрите САМИ какой конкретно из GNU компиляторов запускаете из, полагаю, Rowley-евской оболочки.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
YChebisheva
сообщение May 6 2009, 12:33
Сообщение #23


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 9-01-09
Пользователь №: 43 070



.

А как определить, какой у меня компилятор, если пишу в Cross Works для мк LPC2214?

Сообщение отредактировал YChebisheva - May 6 2009, 12:33
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 6 2009, 15:13
Сообщение #24


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(zltigo @ May 6 2009, 13:54) *
fast, least зачастую очень странно интерпретируются компиляторами - получал в практически одинаковых условиях и 8 и 32bit переменные sad.gif .
С точки зрения гнуся несложно представить себе ситуацию, когда в stdint.h какого-нить ГЦЦ для АРМа появится к примеру такое:
Код
typedef int __attribute__((special_treatment_for_8bit)) int_fast8_t;

где special_treatment_for_8bit - гипотетический атрибут, позволяющий опробовать новую стратегию оптимизатора. Не вижу ничего плохого. 
Цитата(YChebisheva @ May 6 2009, 15:33) *
А как определить, какой у меня компилятор, если пишу в Cross Works для мк LPC2214?

запустите компилятор с ключем --verbose 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 07:23
Рейтинг@Mail.ru


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