본문 바로가기

모던 C 언어/C언어 STL4

3-2. GLib의 자료구조들 (해쉬 테이블 - GHashTable) 본 포스트를 이해하려면 해쉬 테이블에 대한 사전 지식이 필요하다. 만약 해쉬 테이블이 무엇인지 모른다면 먼저 해당 내용들에 대해서 구글링을 해 보자. 해쉬 테이블은 데이터를 Key-Value 쌍으로 관리하기 위한 자료구조이다. 하나의 Key에 하나의 Value만 저장될 수 있다. 아래는 GHashTable로 데이터 삽입, 삭제, 조회, 순회를 하는 간단한 예제이다. #include #include #include // typedef void* gpointer; // HashMap을 순회하면서 호출되는 콜백함수 static void print_film(gpointer key, gpointer value, gpointer user_data) { char *film = (char*)key; char *coun.. 2021. 12. 18.
3-1. GLib의 자료구조들 (링크드 리스트 - GList) 본 포스트를 이해하려면 링크드 리스트에 대한 사전 지식이 필요하다. 만약 링크드 리스트가 무엇인지 모른다면 먼저 해당 내용들에 대해서 구글링을 해 보자. 링크드 리스트는 자료구조책 초반부에 나오면서도 프로그래밍을 하다보면 정말 많이 사용하게 되는 자료구조이다. 개인적으로는 아마 GLib의 모든 자료구조 중에 가장 많이 사용하는 자료구조이다. 백문이불여일견으로 우선 GList로 간단히 데이터 삽입, 삭제, 순회를 하는 예제 코드를 보고, GList를 어떻게 사용하면 되는지 알아보자. #include #include // typedef void* gpointer; // 리스트를 순회하면서 호출되는 콜백함수 static void print_film(gpointer data, gpointer user_data).. 2021. 12. 17.
2. C언어의 STL, GLib ※ glibc와 혼동하지 말자. glibc(gnu c library)는 gnu에서 만든 C 표준 라이브러리이다. 반면 GLib는 gnome 재단에서 만든 서드파티 라이브러리이다. GLib는 C언어 프로그램 개발을 돕는 라이브러리이다. C언어가 개발된지 어느덧 50년이 다 되어가는 만큼 지원하는 기능이 제한적이다. 대표적으로 C언어는 표준 자료구조, 클래스, 추상화된 파일 입출력 라이브러리 등 현대 언어에서 지원하는 기능들이 빠져있다. GLib는 현대 언어들이 제공하는 고수준 기능들을 C언어에서도 사용할 수 있도록 돕는 라이브러리이다. 2.1 GLib란? 공식 GLib 문서에서는 GLib에 대해 아래와 같이 설명하고 있다. GLib is a general-purpose, portable utility li.. 2021. 12. 17.
1. C언어의 제네릭 자료구조들, 하지만 2% 부족한 오늘날 주로 사용되는 언어들 중에서 C언어의 생산성은 낮은 편이다. C언어가 생산성이 낮은 이유는 여러가지가 있겠다. 개인적으로 생각하는 C언어가 생산성이 낮은 이유들은 다음과 같다. 문법적으로 Class를 지원하지 않는다. 예외처리방법이 일관되지 않고 귀찮다. 포인터 관련 메모리 관리가 어렵다. STL과 같은 제네릭 자료구조를 지원하지 않는다. 이번 주제를 통해서는 C언어의 생산성을 크게 높일 수 있는 방법 - STL과 같은 제네릭 자료구조 - 를 사용하는 방법에 대해서 다룰 예정이다. 주된 내용은 glib의 자료구조를 사용하는 방법에 대해서 다룰 예정이다. 이번 포스트에서는 준비 운동 느낌으로 C언어에서 (glib를 제외한) 사용 가능한 제네릭 자료구조들과 한계점들에 대해서 살펴보자 커널 제네릭 자료.. 2021. 5. 22.