Article View: comp.std.c
Article #6010Re: Is this a bug in the standard?
From: Norman Diamond
Date: Mon, 08 May 1989 01:02
Date: Mon, 08 May 1989 01:02
58 lines
2013 bytes
2013 bytes
In article <189@riunite.ACA.MCC.COM> rfg@riunite.UUCP (Ron Guilmette) writes:
>Well, I hope that Subject: line caught your attention.
Well, I think it's a bug in the standard. And in C++, where you first
asked this question. At least this one is a reasonable bug, i.e. hard
to foresee.
>Is there any completely type-safe way to declare a function
>(using function-prototype style) which can accept a
>pointer to itself as a parameter?
Seems to me that ARK's answer in comp.lang.c++ is correct; it's impossible.
But if you're content to wrap it in a struct, you get type-safety:
union bar_t;
typedef int foo_t (union bar_t); /* gets a warning from gcc 1.32 */
typedef foo_t *foo_ptr_t;
typedef union bar_t {
foo_ptr_t foo_ptr;
} bar_t;
foo_t foo; /* your prototype is done, sir */
bar_t make_bar (foo_ptr_t a_foo_ptr)
{
bar_t my_bar;
my_bar.foo_ptr = a_foo_ptr;
return my_bar;
}
int foo (bar_t bar)
{
if (bar.foo_ptr == &foo)
{
printf ("Hello world, it's me!\n");
return 0;
} else {
printf ("Goodbye, cruel world!\n");
return 1;
}
}
main()
{
foo (make_bar (&foo));
}
--
Norman Diamond, Sony Computer Science Lab (diamond%csl.sony.co.jp@relay.cs.net)
The above opinions are my own. | Why are programmers criticized for
If they're also your opinions, | re-inventing the wheel, when car
you're infringing my copyright. | manufacturers are praised for it?
Technical Details
Message-ID:
<10222@socslgw.csl.sony.JUNET>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!lll-winken!uunet!kddlab!titcca!sragwa!wsgw!socslgw!diamond!diamondReferences:
<189@riunite.ACA.MCC.COM>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!lll-winken!uunet!kddlab!titcca!sragwa!wsgw!socslgw!diamond!diamond From: diamond@diamond.csl.sony.junet (Norman Diamond) Newsgroups: comp.std.c Subject: Re: Is this a bug in the standard? Message-ID: <10222@socslgw.csl.sony.JUNET> Date: 8 May 89 01:02:57 GMT References: <189@riunite.ACA.MCC.COM> Sender: news@csl.sony.JUNET Reply-To: diamond@csl.sony.junet (Norman Diamond) Organization: /usr/lib/news/organization Lines: 58