Перетяжка не является частью той или иной области, это часть самой структуры. Если у меня есть, как-структуру
struct foo {
T1 v1;
// <--- some padding here (A)
T2 v2;
// <--- some padding here (B)
T3 v3;
};
ли набивка часть v1? v2 ?. Is B часть v2? v3? Если вы беспокоитесь о том, чтобы заполнять messing с выполнением таких вещей, как сохранение структуры в файле или подобное, большинство (все?) Компиляторов имеют механизм, позволяющий отключить отладку структуры даже на основе структуры по структуре. Чтобы узнать размер последнего члена вашей структуры, в этом случае s
, используйте sizeof
, например.
struct a tmp;
size_t size = sizeof(tmp.s);
Если вы не хотите, чтобы создать временный вы можете воспользоваться тем, что SizeOf происходит во время компиляции и ничего не делать во время выполнения и сделать что-то вроде:
namespace {
const a& dummy_func();
}
size_t size = sizeof(dummy_func().s);
Dummy func не нужно реализовывать когда-либо.
Другой вариант
struct a {
...
typedef char s_type[255];
s_type s;
};
size_t size = sizeof(a::s_type);
Ack, ты меня опередил на 20 секунд. –