raeburn@ATHENA.MIT.EDU (Ken Raeburn) (05/01/89)
GCC version: 1.35, vax.
Input file:
/*
* foo
*/
struct s1 {
int s1_one;
int s1_two;
};
struct s2 {
int s2_one;
struct s1 s2_s1;
int s2_two;
};
struct s3 {
int s3_one;
int s3_two;
struct s2 s3_s2;
};
#ifndef BUG
struct s3 * FOO;
#else
#define FOO ((struct s3 *)0x3700)
#endif
#define BAR (FOO->s3_s2) /* struct s2 */
#define QUUX (&(BAR)) /* struct s2 * */
extern void *xxx;
void foo () {
xxx = &BAR.s2_s1;
xxx = &QUUX->s2_s1; /* line 35 */
}
Output:
% gcc -S quux.c -DBUG
quux.c: In function foo:
quux.c:35: structure has no member named `s2_s1'
The file compiles properly when BUG is not defined; as I read it,
shouldn't the type of FOO be the same?
-- Ken