ian@dms.cdc.com (Ian Hogg) (10/16/90)
Someone here is porting timed to C++ (actually he is learning C++ and is
porting timed to HP-UX so he's trying to kill two birds with one stone).
Anyways, in /usr/include/netinet/ip_icmp.h we have the following definition
struct icmp {
.
.
.
union {
.
.
.
struct ih_idseq {
n_short icd_id;
n_short icd_seq;
} ih_idseq;
int ih_void;
} icmp_hun;
.
.
.
};
In the code we have something like this
struct icmp icp;
icp.icmp_hun.ih_idseq.icd_id = something_unimportant;
This last line generates an error like "union __C9 doesn't have a member
ih_idseq".
It appears that cfront parses the code without error but generates bad c code.
If we move the definition of struct ih_idseq outside of "struct icmp" and
declare the member ih_idseq as "struct ih_idseq ih_idseq" then everything is
great.
I'm using HP's C++(cfront 2.0) on HP 9000/3xx. Is this syntax supposed to be
valid? This code does compile with both Oregon C++ and g++.
--
Ian Hogg x-4484