From 781219dbe16fc327f5b828e1ff6fa45ec3265cba Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 2 Jul 2024 11:09:46 -0300 Subject: Small changes in casts from void* to functions Macro moved to llimits.h, and casts from void* to lua_CFunction first go through 'voidf' (a pointer to a function from void to void), a kind of void* for functions. --- llimits.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'llimits.h') diff --git a/llimits.h b/llimits.h index 57e7bed7..0f3a8ecd 100644 --- a/llimits.h +++ b/llimits.h @@ -152,6 +152,26 @@ typedef LUAI_UACINT l_uacInt; #endif +/* +** Special type equivalent to '(void*)' for functions (to suppress some +** warnings when converting function pointers) +*/ +typedef void (*voidf)(void); + + +/* +** Macro to convert pointer-to-void* to pointer-to-function. This cast +** is undefined according to ISO C, but POSIX assumes that it works. +** (The '__extension__' in gnu compilers is only to avoid warnings.) +*/ +#if defined(__GNUC__) +#define cast_func(p) (__extension__ (voidf)(p)) +#else +#define cast_func(p) ((voidf)(p)) +#endif + + + /* ** non-return type */ -- cgit v1.2.3-55-g6feb