C öğesindeki bir öğenin boyutunu nasıl alabilirim?struct struct öğesinin boyutu
struct A
{
char arr[64];
};
i böyle birşey gerekir:,
sizeof (A :: arr)
sayesinde
C öğesindeki bir öğenin boyutunu nasıl alabilirim?struct struct öğesinin boyutu
struct A
{
char arr[64];
};
i böyle birşey gerekir:,
sizeof (A :: arr)
sayesinde
sizeof(((struct A*)0)->arr);
Kısaca struct A*
bir türüne boş gösterici dökme, ancak o zamandan beri sizeof
işleneni değerlendirilmez, bu yasaldır ve yapının bir örneğini oluşturmadan yapı üyelerinin boyutunu almanıza olanak tanır. Temel olarak, bir örneğinin adres 0'da mevcut olduğunu ve ofset ve sizeof
saptaması için kullanılabileceğini iddia ediyoruz.
Windows ('RTL_FIELD_SIZE (tür, alan) 've Linux (' de bu yapı için makrolar vardır FIELD_SIZE (t, f) ') –
@Michael: Kendi taşınabilir uygulamanızı kolayca yazabildiğiniz zaman, portatif olmayan sisteme özgü makroları kullanmanın bir sebebi yok. –
/* Huh, ilginç bir şekilde bu soyut ile çalışmaz structs/classes */Aynı sınıf içinde statik sabitler üzerinde çalışmaz –
Eğer 'sizeof (A :: arr)' çalıştığımızda ne oldu:
ayrıca okumak, bu makale ayrıntılı için? – pmg
@pmg 'A' C –
C türünde değil. 'Sizeof (A :: arr)' yanıtı olarak" sözdizimi hatası "dır. C, sözdiziminde herhangi bir yerde çift sütun kullanmaz. –