GTK를 하면서 가장 궁금했던 점은 g_signal_connect과 g_signal_swapped 의 차이점이었다.
비슷한 기능인데, 굳이 왜 존재하는 함수일까라는 의문이 많이 들었다.
이러한 고민을 하는 분에게 간단하게 소개하고자 한다.
1 2 3 | g_signal_connect_swapped (button, "clicked", (GCallback) gtk_widget_hide, other_widget); | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 | static void button_clicked_cb (GtkButton* button, GtkWidget* other_widget) { gtk_widget_hide (other_widget); } ... g_signal_connect (button, "clicked", (GCallback) button_clicked_cb, other_widget); | cs |
위의 두 소스는 결국 같은 기능을 한다.
이처럼 g_signal_connect는 추가로 사용자 함수를 만들어 정의를 해야하지만, g_signal_swapped 는 gtk_widget_hide처럼 미리 정의한 기능을 사용한다면 더 간단하게 코드를 작성할 수 있다.
결국, 더 간단하게 작성하느나 아니냐에 따라 두 함수가 존재하는 것으로 생각된다.
물론, 내가 레퍼런스를 많이 찾아본 것은 아니다. 그러므로 틀릴 수 있으나, GNOME Developer의 문서를 참조하여 정리하였기 때문에 어느정도 신뢰는 할 수 있으리라 생각한다.
만약 다른 내용으로 알고 계신다면 댓글을 달아주셔서 더 나은 정보가 될 수 있도록 도움주셨으면 좋겠습니다.
'컴퓨터 관련 > Linux || Unix' 카테고리의 다른 글
컴파일러(compiler)와 인터프리터(interpreter)의 차이점 / 컴파일러란? /인터프리터란? (0) | 2017.04.25 |
---|---|
GTK+ 버튼 클릭으로 콘솔에 문자열 출력 (0) | 2017.04.23 |
GTK+ 이벤트[1] 시그널 형태 (0) | 2017.04.23 |
GTK+ 컨테이너 Widget [2] Scrollbar widget (0) | 2017.04.23 |
GTK+ 컨테이너 Widget [1] Paned Window Widget (0) | 2017.04.23 |
댓글