Предназначено для сокрытия подробностей реализации. Typedef делает GtkWidget
непрозрачным типом данных (фактический struct _GtkWidget
не отображается в заголовках - по крайней мере, начиная с Gtk + 3.0). Фактические составляющие структуры скрыты от вас, когда вы используете их в вашем приложении. Вам нужно будет использовать функции доступа, чтобы манипулировать элементами составной структуры. Таким образом, даже если реализация изменится, вам не придется переписывать приложение.
Надеюсь, это поможет!