AaronBallman wrote:

> > > This diagnostic fires in the following code - 
> > > https://gcc.godbolt.org/z/G6sYcTnWc:
> > > ...
> > > Is this expected?
> > 
> > 
> > Yes. The prototype of `f` is using a `locally` defined struct (see the 
> > `Wvisibility` diagnostic). So that type is ONLY visible on line 1.
> 
> Thanks for the explanation! TIL about `function prototype scope` in C. 
> Interestingly, neither of the two diagnostics is issued when compiling the 
> code as C++, though I would expect this to be invalid C++ code. Any thoughts 
> on how this works in C++? (https://gcc.godbolt.org/z/bhjYKdG36)

C++ is surprisingly different from C with a lot of these basics. The issue here 
is that, in C you can introduce a type anywhere you can spell a type name, but 
the same is not true in C++: https://godbolt.org/z/bfseWxsWq So the issue here 
is that `struct stat` is introducing the type into a particular scope and that 
changes lookup behavior; C++ doesn't have the issue because you cannot 
introduce a new type in a function parameter list so their lookup behavior is 
different.




https://github.com/llvm/llvm-project/pull/157364
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to