powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / проблема с выравниванием
7 сообщений из 7, страница 1 из 1
проблема с выравниванием
    #34244357
hеrоmаntоr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хочу сделать нечто такое:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#include <iostream>

class one {
	char ch;
	unsigned dest :  21 ;
	unsigned term :  1 ;
};

class two {
	unsigned last :  1 ;
};

class three {
	unsigned llast :  1 ;
	unsigned rlast :  1 ;
};

class final : one, two {
};

class final2 : one, three {
};

int main(int argc, char *argv[]) {
	std::cout << sizeof(final) << std::endl; // expect 4; 12 given
	std::cout << sizeof(final2) << std::endl; // expect 4; 12 given

	return  0 ;
}

из-за выравнивания конечный класс получается слишком жирным, нужно упаковать в 4(8 на крайняк) байта. Можно как-то обойти этот момент или придется пользовать макросы аля

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
#define INJECT_TWO_PROPS() unsigned last :  1 ;
#define INJECT_THREE_PROPS() unsigned llast :  1 ; unsigned rlast :  1 ;

class final {
	char ch;
	unsigned dest :  21 ;
	unsigned term :  1 ;

	INJECT_TWO_PROPS();
};

class final2 {
	char ch;
	unsigned dest :  21 ;
	unsigned term :  1 ;

	INJECT_THREE_PROPS();
};
...
Рейтинг: 0 / 0
проблема с выравниванием
    #34244663
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй #pragma pack(1)
...
Рейтинг: 0 / 0
проблема с выравниванием
    #34244789
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не поможет прагма, ой не поможет!
...
Рейтинг: 0 / 0
проблема с выравниванием
    #34244837
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedНе поможет прагма, ой не поможет!

Чего так пессимистично? ;) С 8-ми 6 сделала.
...
Рейтинг: 0 / 0
проблема с выравниванием
    #34244960
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все равно до 0 не скостишь, указатель на typeinfo куда-то положить надо
...
Рейтинг: 0 / 0
проблема с выравниванием
    #34245133
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заменить class на struct и добавить #pragma pack(1)
...
Рейтинг: 0 / 0
проблема с выравниванием
    #34246950
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага вот только чем класс от структуры отличается, по мне кроме как защитой по умолчанию так ничем
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / проблема с выравниванием
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]