Maybe 모나드를 사용한 C 언어의 안전한 나눗셈

2025-08-11

이 글에서는 C 언어에서 형식 및 경계가 안전한 제네릭 컨테이너 구현에 대해 자세히 설명합니다. 저자는 Haskell에서 영감을 받은 Maybe 형식을 소개하여 값을 반환하지 않을 수 있는 함수(예: 0으로 나누기)를 처리합니다. Maybe를 정의하는 매크로를 사용하여 안전한 나눗셈 함수가 생성되며, 0으로 나누기와 표현 가능한 가장 작은 정수를 -1로 나누는 경계 케이스가 처리됩니다. GCC에서 생성된 어셈블리 코드가 분석되어 함수의 안전성이 검증됩니다. 저자는 C 프로그램의 완전한 안전성을 증명하는 이 접근 방식의 한계를 지적하며 결론을 맺습니다.

더 보기
개발

C언어의 제네릭 컨테이너: vec 구현

2025-07-26

이 글에서는 C언어에서 형식 안전하고 경계 검사가 가능한 제네릭 컨테이너인 'vec'의 구현에 대해 자세히 설명합니다. vec는 기본적으로 realloc을 사용하여 동적으로 크기가 조정 가능한 배열입니다. vec_push 함수 구현 및 메모리 할당 오류 처리 방법 등 구현 세부 사항을 설명하고, 성능 향상을 위한 개선된 인터페이스인 vec_push_cap 및 vec_push_auto에 대해서도 논의합니다. 또한 vec2array 매크로를 사용한 기존 C 배열과의 상호 운용성에 대해서도 설명합니다.

더 보기