표준 라이브러리 헤더 <stdalign.h>

표준 라이브러리 헤더 <stdalign.h> (C11)(C23에서 폐기)

구조체나 타입의 **정렬(alignment)**을 제어하고 싶을 때, C에는 _Alignas_Alignof라는 키워드가 있어요. 그런데 이 이름은 조금 낯설죠. <stdalign.h>는 타입 지원 라이브러리의 일부로, 이 키워드를 alignas/alignof라는 더 친숙한 이름으로 쓰게 해 주는 편의 매크로를 제공해요.

출처: cppreference

본문

매크로(Macros)

매크로 설명
alignas (C11)(C23에서 제거) 키워드 _Alignas로 확장되는 편의 매크로
alignof (C11)(C23에서 제거) 키워드 _Alignof로 확장되는 편의 매크로

상수(Constants)

상수 설명
__alignas_is_defined (C11)(C23에서 제거) 정수 상수 1로 확장
__alignof_is_defined (C11)(C23에서 제거) 정수 상수 1로 확장

시그니처(Synopsis)

#if __STDC_VERSION__ < 202311L
#define alignas _Alignas
#define alignof _Alignof
#define __alignas_is_defined 1
#define __alignof_is_defined 1
#endif

C23부터는 alignas, alignof가 키워드 자체가 되면서 이 편의 매크로가 필요 없어져요. 그래서 시그니처에서도 __STDC_VERSION__202311L보다 작을 때만 정의하도록 조건문이 걸려 있어요.

더 알아보기

  • 언어 수준의 _Alignas/_Alignof 의미는 정렬(alignment) 문서에서 확인해요.
  • alignof와 함께 sizeof의 개념을 대비해서 보면 구조체 레이아웃 이해가 쉬워져요.