Piotr Głudkowski

Piotr Głudkowski Rzucam się na
wszystko to, co jest
ciekawe i wymaga
rusze...

Temat: Pola bitowe w strukturach - od której strony?

Czy wiecie może, od której strony alokowane są pola bitowe (Win32/64, kompilator VS2005/VS2008)?
Czyli jeśli będzie struktura:

struct X
{
byte a : 2;
byte b : 2;
}

to w tym bajcie bity będą przyporządkowane tak:
aabb....
czy tak:
....bbaa
a może tak:
....aabb
albo jeszcze inaczej?
(oczywiście MSB po lewej, LSB po prawej).Piotr Głudkowski edytował(a) ten post dnia 02.11.10 o godzinie 19:12

konto usunięte

Temat: Pola bitowe w strukturach - od której strony?

Zadajesz niebezpieczne pytania...

Jeśli dostajesz te bity z zewnątrz powinieneś je po prostu zaakceptować tak jak są. I czytać osobno.

Jeśli sam je wypełniasz, to możesz to robić przy pomocy przenośnego kodu.

Różnice mogą się pojawić nawet między C++ Win32 a C++ CLR.

Gdybyś jednak się upierał przy rozwiązaniu MS-only:

http://msdn.microsoft.com/de-de/library/ewwyfdbe%28VS....

W poniższej książce jest także o "bitfields":

Google: "Write Portable Code: An Introduction to Developing Software for Multiple Platforms bitfields".Piotr Likus edytował(a) ten post dnia 02.11.10 o godzinie 19:35
Piotr Głudkowski

Piotr Głudkowski Rzucam się na
wszystko to, co jest
ciekawe i wymaga
rusze...

Temat: Pola bitowe w strukturach - od której strony?

Wiem, że niebezpieczne :)
Zadałem je w związku z moim topicem tutaj:
http://www.goldenline.pl/forum/2028750/pola-bitowe-z-c...

Muszę owrapować w C# API AutoMapy, napisane w C++.
Oni, niestety, zastosowali w kilku miejscach pola bitowe i klops.

Tak czy inaczej dzięki za link - on wyjaśnia sprawę w 100% :)Piotr Głudkowski edytował(a) ten post dnia 02.11.10 o godzinie 19:37

konto usunięte

Temat: Pola bitowe w strukturach - od której strony?

Zrób jeden egzemplarz takiej strukturki, następnie zrzutuj na void* i pod debugerem zobacz, ustaw sobie hex albo binary. Będziesz wtedy wiedział jak jest wypełniane.

Uwagi o przenośności oczywiście znasz, natomiast jak ktoś używa pól bitowych w API to z założenia nie myśli o przenośności za bardzo, więc nie ma co się tym w tym przypadku przejmować.

konto usunięte

Temat: Pola bitowe w strukturach - od której strony?

Piotr Głudkowski:
Czy wiecie może, od której strony alokowane są pola bitowe (Win32/64, kompilator VS2005/VS2008)?
Czyli jeśli będzie struktura:

struct X
{
byte a : 2;
byte b : 2;
}

to w tym bajcie bity będą przyporządkowane tak:
aabb....
czy tak:
....bbaa
a może tak:
....aabb
albo jeszcze inaczej?
(oczywiście MSB po lewej, LSB po prawej).

union {
struct {
char a : 2;
char b : 2;
} foo;
char bar;
} baz;

baz.bar = 0;
baz.foo.a = 1;

i odczytać w debugerze albo jakoś.
Piotr Głudkowski

Piotr Głudkowski Rzucam się na
wszystko to, co jest
ciekawe i wymaga
rusze...

Temat: Pola bitowe w strukturach - od której strony?

Dzięki, Panowie :)
Sprawdziłem: okazało się, że tym razem mały-miękki nie kłamie i jest dokładnie tak, jak opisano w linku podanym przez Piotrka.

Następna dyskusja:

Polecane strony o C/C++




Wyślij zaproszenie do