표준 라이브러리 헤더 <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의 개념을 대비해서 보면 구조체 레이아웃 이해가 쉬워져요.