----- On Oct 5, 2021, at 2:01 PM, Rasmus Villemoes linux@xxxxxxxxxxxxxxxxxx wrote: > On 05/10/2021 15.47, Steven Rostedt wrote: > >> That is, instead of declaring: typeof(*p) *_p; just do: >> typeof(p) _p; >> >> Also had to update a lot of the function pointer initialization in the >> networking code, as a function address must be passed as an argument in >> RCU_INIT_POINTER() > > I would think that one could avoid that churn by saying > > typeof((p) + 0) > > instead of just "typeof(p)", to force the decay to a pointer. If the type of @p is an integer, (p) + 0 is still valid, so it will not prevent users from passing an integer type as argument, which is what the current implementation prevents. Also, AFAIU, the compiler wants to know the sizeof(p) in order to evaluate (p + 0). Steven's goal is to hide the structure declaration, so that would not work either. Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com