Главная страница
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.035 c
1-8366
The X
2003-10-22 04:51
2003.11.03
Нужно перевести текст консольного приложения в


8-8544
Freddy
2003-07-03 10:21
2003.11.03
Графическое отображение WAV-файла на экране


1-8373
Stratos
2003-10-22 04:25
2003.11.03
Упаковка таблиц Paradox


3-8311
bushmen
2003-10-13 11:09
2003.11.03
Вопрос по ADO


3-8307
Alex-kosmonavt
2003-10-13 14:32
2003.11.03
не могу выполнить запрос