On Wed, Jan 31, 2007 at 11:23:17PM +0100, Tomasz Jankowski wrote:
> 
> static void
> maman_ibaz_base_init (gpointer g_iface)
> {
>   static gboolean initialized = FALSE;
> 
>   if (!initialized) {
>     /* create interface signals here. */
>     initialized = TRUE;
>   }
> }
> 
> I'm quite young programmer (it's my hobby only), but I'm almost sure, that
> all variables declared inside function are destroyed when function execution
> if finished. Does 'static' keyword changes this behavior?!

Yes, static is probably the most confusing C keyword.  For
variables inside functions (and other blocks) it changes the
storage type:

  static void
  maman_ibaz_base_init (gpointer g_iface)
  {
    static gboolean initialized = FALSE;

    if (!initialized) {
      /* create interface signals here. */
      initialized = TRUE;
    }
  }

works the same as

  static gboolean initialized = FALSE;

  static void
  maman_ibaz_base_init (gpointer g_iface)
  {
    if (!initialized) {
      /* create interface signals here. */
      initialized = TRUE;
    }
  }

except that the name `initialized' is visible only in the
function maman_ibaz_base_init() in the first case.

Yeti


--
Whatever.
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to