> On Apr 10, 2024, at 17:56, Joseph Myers <josmy...@redhat.com> wrote: > > On Wed, 10 Apr 2024, Qing Zhao wrote: > >> Okay, the above is very clear, thanks a lot for the explanation. >> So, basically, for “counted-by” attribute: >> **The following is good: >> struct f { >> int b; >> int c; >> int a[] __attribute__ ((counted_by (b))) }; >> struct f { >> int b; >> int c; >> int a[] __attribute__ ((counted_by (b))) }; >> >> **The following should error: >> >> struct f { >> int b; >> int c; >> int a[] __attribute__ ((counted_by (b))) }; >> struct f { >> int b; >> int c; >> int a[] __attribute__ ((counted_by (c))) }; /* error here */ >> >> For the same tag in different scopes case: >> >> struct f { >> int b; >> int c; >> int a[] __attribute__ ((counted_by (b))) } y0; >> >> void test1(void) >> { >> struct f { >> int b; >> int c; >> int a[] __attribute__ ((counted_by (c))) } x; >> >> y0 = x; /* will report incompatible type error here */ >> } >> >> Are the above complete? > > Yes, that looks like what should be tested (with the addition of the case > of same tag, different scopes, same counted_by so compatible).
Okay, thanks for the help. Qing > > -- > Joseph S. Myers > josmy...@redhat.com