GLib 코딩을 하다가 g_autoptr() 이라는 매크로가 보이길래, C로 또 무슨 흑마술을 부렸나 살펴봤더니 RAII (
Resource acquisition is initialization) 기법을 가능하게 하는 확장이 생겼습니다. cleanup 이라는 이름의 확장입니다. 다음과 같은 형태로 쓸 수 있습니다.
void clean_up(int *final_value)
{
printf("Cleaning up\n");
printf("Final value: %d\n",*final_value);
}
int main(int argc, char **argv)
{
/* declare cleanup attribute along with initiliazation
Without the cleanup attribute, this is equivalent
to:
int avar = 1;
*/
int avar __attribute__ ((__cleanup__(clean_up))) = 1;
avar = 5;
return 0;
}
다음에는 간단한 ref count 시스템을 만들어봐야겠군요 :-)
댓글 없음:
댓글 쓰기