Aracılığıyla paylaş


alignof operatör

alignof işleci belirtilen türün bayt cinsinden hizalamasını türünde size_tbir 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)32eş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ı Sgö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.

Ayrıca bkz.

Birli İşleçli İfadeler
Anahtar Sözcükler