On Mon, Aug 05, 2024 at 04:46:09PM +0000, Qing Zhao wrote:
> So, you want me to add counted_by test-suite for C23? (Which should be 
> supported)
> Okay, but I will do it in another separate patch since this patch is for C++. 
> > The C++11/C23 standard attributes are more strict on where they can appear
> > depending on what it appertains to, as it applies to declarations, I think
> > it needs to go before the [] or at the start of the declaration, so
> >  [[gnu::counted_by (count)]] int field[];
> > or
> >  int field [[gnu::counted_by (count)]] [];
> > but I could be wrong, better test it…
> For C++11, as I just checked:
> 
>  int field[] [[gnu::counted_by (count)]];
> 
> Is fine. 

What do you mean by fine, that it emits the sorry?  Yes, but the question
is if it will be ok when the support is added.
struct S {
  int s;
  int f[] [[gnu::counted_by (s)]];
};
with -std=c23 certainly emits
test.c:3:3: warning: ‘counted_by’ attribute does not apply to types 
[-Wattributes]
    3 |   int f[] [[gnu::counted_by (s)]];
      |   ^~~
while it is fine for
  int f [[gnu::counted_by (s)]] [];
and
  [[gnu::counted_by (s)]] int f[];
So, I'd use that in the C++ testcase too...

        Jakub

Reply via email to