Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.01 c
1-8358
Russko
2003-10-23 10:04
2003.11.03
ExcelApplication


1-8468
Rookie
2003-10-24 11:39
2003.11.03
Свойство не видно в Object Inspector


7-8698
Артемка
2003-08-15 15:30
2003.11.03
программирование ЦАП. Регистры


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


14-8589
Max Zyuzin
2003-10-15 14:08
2003.11.03
McAfee pro v7.02





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский