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.
This commit is contained in:
Roberto Ierusalimschy
2024-07-02 11:09:46 -03:00
parent d71fbc3175
commit 781219dbe1
2 changed files with 26 additions and 22 deletions

View File

@@ -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
*/