Is this portable?
Can I declare a struct in a function's declaration section? Something
like this:
static void
foobar(void)
{
struct foo {
Oid foo;
int bar;
};
struct foo baz;
baz.foo = InvalidOid;
baz.bar = 42;
}
I tried here and GCC does not complain, with -std=c89 -pedantic.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Alvaro Herrera wrote:
Can I declare a struct in a function's declaration section? Something
like this:static void
foobar(void)
{
struct foo {
Oid foo;
int bar;
};struct foo baz;
baz.foo = InvalidOid;
baz.bar = 42;}
I tried here and GCC does not complain, with -std=c89 -pedantic.
Sure.
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://www.enterprisedb.com
+ If your life is a hard drive, Christ can be your backup. +
Alvaro Herrera wrote:
Can I declare a struct in a function's declaration section? Something
like this:static void
foobar(void)
{
struct foo {
Oid foo;
int bar;
};struct foo baz;
baz.foo = InvalidOid;
baz.bar = 42;}
I tried here and GCC does not complain, with -std=c89 -pedantic.
It works fine with Sun Studio 11.
Zdenek
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes:
Alvaro Herrera wrote:
Can I declare a struct in a function's declaration section?
It works fine with Sun Studio 11.
AFAICT it's required by the original K&R C book.
regards, tom lane
"Tom Lane" <tgl@sss.pgh.pa.us> writes:
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes:
Alvaro Herrera wrote:
Can I declare a struct in a function's declaration section?
It works fine with Sun Studio 11.
AFAICT it's required by the original K&R C book.
IIRC there's something odd about the scope of the declared struct label.
Something like it previously extended to the end of the file but post-ANSI was
limited to the scope it's declared in (including very limited scopes where it
would be useless such as in function parameters).
--
Gregory Stark
EnterpriseDB http://www.enterprisedb.com
Gregory Stark wrote:
"Tom Lane" <tgl@sss.pgh.pa.us> writes:
Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes:
Alvaro Herrera wrote:
Can I declare a struct in a function's declaration section?
It works fine with Sun Studio 11.
AFAICT it's required by the original K&R C book.
IIRC there's something odd about the scope of the declared struct label.
Something like it previously extended to the end of the file but post-ANSI was
limited to the scope it's declared in (including very limited scopes where it
would be useless such as in function parameters).
Hmm, thanks everybody. I was just going to say "bummer!" because I
needed to build a qsort comparator for these, but then I realized that
it's better if I keep worker and launcher database structs separate --
the only field they use in common is the Oid anyway.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Gregory Stark <stark@enterprisedb.com> writes:
IIRC there's something odd about the scope of the declared struct label.
Something like it previously extended to the end of the file but post-ANSI was
limited to the scope it's declared in (including very limited scopes where it
would be useless such as in function parameters).
I think you might be thinking of the use of a previously unreferenced
"struct foo" in a function declaration's parameter list, which is
something that did change (and so gcc warns about it). But within a
block is not that case.
regards, tom lane