💻
1000行OS 勉強メモ 06 C標準ライブラリ
概要
- 1000行OSの勉強メモです
commonc.h
#define NULL ((void *)0)
#define align_up(value, align) __builtin_align_up(value, align)
#define is_aligned(value, align) __builtin_is_aligned(value, align)
#define offsetof(type, member) __builtin_offsetof(type, member)
#define va_list __builtin_va_list
- define NULL ((void *)0)
- NULLの定義
- C言語では、
void *は他のオブジェクトポインタ型へ暗黙に変換なのでキャストせずに使用可能
- #define align_up(value, align) __builtin_align_up(value, align)
-
valueをalignの倍数まで切り上げる -
align_up(13, 4)なら、13以上で一番近い4の倍数は16
-
- #define is_aligned(value, align) __builtin_is_aligned(value, align)
-
valueがalignの倍数に揃っているか調べる -
is_aligned(16, 4)はtrue -
is_aligned(18, 4)はfalse
-
- #define is_aligned(value, align) __builtin_is_aligned(value, align)
- 構造体の先頭からメンバまでの距離を求める
Discussion