On Thu, Feb 27, 2025 at 08:48:19PM +0800, Zijun Hu wrote: > On 2025/2/21 21:02, Zijun Hu wrote: > > void api_func_a(...); > > > > static inline void api_func_b(...) > > { > > return api_func_a(...); > > } > > The Usage : Return void function in void function > > IMO, perhaps, the usage is not good since: > > A) STD C does not like the usage, and i find GCC has no description > about the usage. > C11/C17: 6.8.6.4 The return statement > "A return statement with an expression shall not appear in a > function whose return type is void" We really don't use STD C, the kernel is littered with extensions. > B) According to discussion, the usage have function that return type > of the callee api_func_a() is monitored. but this function has below > shortcoming as well: > > the monitor is not needed if the caller api_func_b() is in the same > module with the callee api_func_a(), otherwise, provided the callee is > a API and provided by author of other module. the author needs to clean > up lot of usages of the API if he/she changes the API's return type from > void to any other type, so it is not nice to API provider. > > C) perhaps, most ordinary developers don't known the function mentioned > by B), and also feel strange for the usage It is quite common to do kernel wide updates using scripts / cocinelle. If you have a specialization that wraps a function to fill out a default value, then you want the return types to keep matching. Ex. return_type foo(type1 a1, type2 a2); return_type my_foo(type1 a1) { return foo(a1, value); } is a normal thing to do. The whole STD C cannot return void bollocks breaks that when return_type := void, so in that regards I would call this a STD C defect.