Значение выравнивания
От: Владик Россия  
Дата: 26.09.04 08:41
Оценка:
Привет!

Можно ли получить максимальное значение выравнивания для конкретной платформы?
Как все запущенно...
Re: Значение выравнивания
От: Сергей Мухин Россия  
Дата: 26.09.04 08:57
Оценка:
Здравствуйте, Владик, Вы писали:

В>Привет!


В>Можно ли получить максимальное значение выравнивания для конкретной платформы?



2**(CHAR_BIT * sizeof int )



---
С уважением,
Сергей Мухин
Re[2]: Значение выравнивания
От: Владик Россия  
Дата: 26.09.04 09:16
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>
СМ>2**(CHAR_BIT * sizeof int ) 
СМ>

СМ>

Ы? Я немного неправильно сформулировал. Как получить минимальное выравнивание для размещения всех возможных типов на конкретной платформе?
Как все запущенно...
Re[3]: Значение выравнивания
От: korzhik Россия  
Дата: 26.09.04 09:42
Оценка: 4 (1)
Здравствуйте, Владик, Вы писали:

В>Как получить минимальное выравнивание для размещения всех возможных типов на конкретной платформе?


#include "boost/type_traits/alignment_of.hpp"
#include "boost/type_traits/type_with_alignment.hpp"

  boost::alignment_of<boost::detail::max_align>::value;

?
Re[4]: Значение выравнивания
От: _Winnie Россия C++.freerun
Дата: 26.09.04 09:52
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, Владик, Вы писали:

В>>Как получить минимальное выравнивание для размещения всех возможных типов на конкретной платформе?

K>
K>#include "boost/type_traits/alignment_of.hpp"
K>#include "boost/type_traits/type_with_alignment.hpp"

K>  boost::alignment_of<boost::detail::max_align>::value;
K>

K>?


boost кошек не ловит.
Этот код на IC++8.0 под Windows выдает почему-то странное число 8, хотя SSE требует выравнивания данных на 16 байт.

#include "boost/type_traits/alignment_of.hpp"
#include "boost/type_traits/type_with_alignment.hpp"
#include <iostream>

__declspec(align(16)) struct My_Cool_SSE_Vector
{
  float m[4];
};

int main()
{
  std::cout <<
    boost::alignment_of<boost::detail::max_align>::value;
}
Правильно работающая программа — просто частный случай Undefined Behavior
Re: Значение выравнивания
От: MaximE Великобритания  
Дата: 26.09.04 10:42
Оценка: 4 (1)
Владик wrote:

> Можно ли получить максимальное значение выравнивания для конкретной платформы?


#include "boost/type_traits/type_with_alignment.hpp"
size_t const max_align = boost::alignment_of<boost::detail::max_align>::value;


--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9 gamma
Re[5]: Значение выравнивания
От: folk Россия  
Дата: 26.09.04 11:02
Оценка: +1
Здравствуйте, _Winnie, Вы писали:

В>>>Как получить минимальное выравнивание для размещения всех возможных типов на конкретной платформе?


K>>
K>>#include "boost/type_traits/alignment_of.hpp"
K>>#include "boost/type_traits/type_with_alignment.hpp"

K>>  boost::alignment_of<boost::detail::max_align>::value;
K>>

K>>?


_W>boost кошек не ловит.

_W>Этот код на IC++8.0 под Windows выдает почему-то странное число 8, хотя SSE требует выравнивания данных на 16 байт.

Не стреляйте в пианиста, он играет как умеет.

Можно сказать что 8 будет правильным значением для всех переносимых типов, а со всякими платформенно зависимыми штуками можно справиться только списком #ifdef для всех платформ. В бусте наверняка просто определяется alignment requirements объединения, содержащего объекты разных типов.
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.