C 언어에서 타입 안전한 제네릭 데이터 구조를 구현하는 기법
Type Safe Generic Data Structures in C

C 언어에서 타입 안전한 제네릭 데이터 구조를 구현하는 독특한 기법을 소개한다. union과 삼항 연산자를 활용해 컴파일 타임에 타입 오류를 잡아내는 방법을 설명하며, void 포인터와 인라인 저장 방식의 한계를 극복한다. 매크로를 사용해 list_prepend 호출 시 잘못된 타입을 전달하면 컴파일러가 오류를 발생시킨다. 이 기법은 리스트, 맵, 트리 등 다양한 구조에 적용 가능하다.
매크로는 평판이 나쁘지만, 나는 이것이 상당히 이해하기 쉽다고 생각한다.