Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.03;
Скачать: CL | DM;

Вниз

перевод структуры с с++ в делфи   Найти похожие ветки 

 
Anatol   (2003-10-22 19:26) [0]

В с++ имеем

struct struct1 {
unsigned long field1;
unsigned long field2;
unsigned long field3;
unsigned long field4;
}struct1;

struct struct2{
unsigned char field1[16];
unsigned char field2[9];
unsigned char field3[13];
unsigned char field4;
unsigned char field5;
unsigned char field6;
unsigned char field7[41];
}struct2;

struct struct3 {
struct struct1 struct1;
struct struct2 struct2;
} struct3;

sizeof(struct1) = 16
sizeof(struct2) = 82
sizeof(struct3) = 100

при обьявлении сответсвующих структур в делфи
TStruct1 = packed record
field1: Cardinal;
field2: Cardinal;
field3: Cardinal;
field4: Cardinal;
end;

TStruct2 = packed record
field1: array[1..16] of Byte;
field2: array[1..9] of Byte;
field3: array[1..13] of Byte;
field4: Byte;
field5: Byte;
field6: Byte;
field7: array[1..41] of Byte;
end;

TStruct3 = packed record
struct1: TStruct1;
struct2: TStruct2;
end;

var
Struct3: TStruct3;

получаем
SizeOf(Struct3.struct1) = 16
SizeOf(Struct3.struct2) = 82
SizeOf(Struct3) = 98

почему SizeOf(Struct3) в с++ больше на 2 байта???


 
Игорь Шевченко ©   (2003-10-22 19:31) [1]

Какая опция выравнивания стоит при компиляции С-шных структур ?
(Судя по результату, не один байт)


 
Anatol   (2003-10-22 19:43) [2]

я плохо знаю MS c++ но в опциях проекта Project Settings\c++\Optimizations стоит Disable(Debug).
Наверно в другом месте ставится потому что убрал в делфи packed и тоже получаем 100.

Спасибо, я почемуто был уверен что в с++ структуры должны занимать ровно столько сколько в суме имеют ее члены.


 
Игорь Шевченко ©   (2003-10-22 21:33) [3]

Anatol (22.10.03 19:43)

Нет, зависит от опций компилятора, от одного до 8 байт.



Страницы: 1 вся ветка

Текущий архив: 2003.11.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-8469
frogk
2003-10-24 12:03
2003.11.03
Файл из записей


3-8280
rosl
2003-10-14 03:35
2003.11.03
сортировка


4-8736
Clipper Chip
2003-08-28 11:50
2003.11.03
Showmessage


14-8674
Gorlum
2003-10-13 21:02
2003.11.03
Объясните неразумному, в чём дело?


14-8588
Delirium^.Tremens
2003-10-15 10:01
2003.11.03
Народные приметы