struct foo; typeof(struct foo) *p; // This is fine. typeof(*p) *p2; // foo.c:5: error: dereferencing pointer to incomplete type This is important, because AFAICT the only way to declare a const pointer for a given type is: "const typeof(*p) *" which doesn't work if p is a pointer to an undefined struct :(
Fixed for GCC 10+, most likely by r10-5166 (aka PR 88827).