Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
alignof
işleci belirtilen türün bayt cinsinden hizalamasını türünde size_t
bir değer olarak döndürür.
Sözdizimi
alignof( type )
Açıklamalar
Örneğin:
Expression | Değer |
---|---|
alignof( char ) |
1 |
alignof( short ) |
2 |
alignof( int ) |
4 |
alignof( long long ) |
8 |
alignof( float ) |
4 |
alignof( double ) |
8 |
alignof
değeri, temel türler için sizeof
değeriyle aynıdır. Ancak şu örneği göz önünde bulundurun:
typedef struct { int a; double b; } S;
// alignof(S) == 8
Bu durumda değer, alignof
yapıdaki en büyük öğenin hizalama gereksinimidir.
Benzer şekilde,
typedef __declspec(align(32)) struct { int a; } S;
alignof(S)
32
eşittir.
için alignof
bir kullanım, kendi bellek ayırma yordamlarınızdan birine parametre olarak kullanılır. Örneğin, aşağıdaki tanımlı yapıyı S
göz önünde bulundurarak, belirli bir hizalama sınırında bellek ayırmak için adlı aligned_malloc
bir bellek ayırma yordamı çağırabilirsiniz.
typedef __declspec(align(32)) struct { int a; double b; } S;
int n = 50; // array size
S* p = (S*)aligned_malloc(n * sizeof(S), alignof(S));
Hizalamayı değiştirme hakkında daha fazla bilgi için bkz:
x86 ve x64 için kodda hizalama farklılıkları hakkında daha fazla bilgi için bkz:
Microsoft'a özgü
alignof
ve __alignof
Microsoft derleyicisindeki eş anlamlılardır. C++11'de standardın bir parçası olmadan önce, Microsoft'a özgü __alignof
operatör bu işlevi sağlamıştı. Maksimum taşınabilirlik için Microsoft'a alignof
özgü __alignof
işleç yerine işlecini kullanmanız gerekir.
Derleyici seçeneği/Za
(Dil uzantılarını devre dışı bırak) belirtilmediği sürece, _alignof
önceki sürümlerle uyumluluk için __alignof
bir eş anlamlıdır.