https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91952

            Bug ID: 91952
           Summary: [rfe] __attribute__((__default_value__()))
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: allison.karlitskaya at redhat dot com
  Target Milestone: ---

In automatic context, instead of writing

  int x = 5;

it would be nice to be able to write

  __attribute__((__default_value__(5))) int x;

which would have slightly different semantics: the default value would be
required to be a compile-time constant, and the variable would always have the
initial value, as soon as it is allocated, even if the declaration is never
reached (for example, in case the line is skipped with a 'goto').  See bug
91951 about that.


This would also allow for a longstanding improvement in some glib macro hackery
that is in wide use: g_autoptr().  Currently you need to write:

  g_autoptr(GObject) my_object = NULL;

in order to insure that GCC doesn't call the cleanup function on a random
pointer value.  It wasn't possible to absorb the = NULL into the macro in a way
that didn't make the variable declaration look like a function call.  If
something like __attribute__((__default_value__)) had been available at the
time, I would have surely used it.

Can we add it now?

Reply via email to