cc -pthread -Wall -Wextra -Werror -Wno-error=deprecated -Wno-error=deprecated-declarations wchar/wcsxfrm_l.c -o wchar/wcsxfrm_l -D_POSIX_C_SOURCE=202405L -lm -lpthread -liconv wchar/wcsxfrm_l.c:5:67: error: type specifier missing, defaults to 'int' [-Werror,-Wimplicit-int] size_t (*foo)(wchar_t *restrict, const wchar_t *restrict, size_t, locale_t) = wcsxfrm_l; ^ wchar/wcsxfrm_l.c:5:79: error: use of undeclared identifier 'wcsxfrm_l'; did you mean 'wcsxfrm'? size_t (*foo)(wchar_t *restrict, const wchar_t *restrict, size_t, locale_t) = wcsxfrm_l; ^~~~~~~~~ wcsxfrm /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/wchar.h:142:8: note: 'wcsxfrm' declared here size_t wcsxfrm(wchar_t * __restrict, const wchar_t * __restrict, size_t); ^ wchar/wcsxfrm_l.c:5:10: error: incompatible function pointer types initializing 'size_t (*)(wchar_t *restrict, const wchar_t *restrict, size_t, int)' (aka 'unsigned long (*)(int *restrict, const int *restrict, unsigned long, int)') with an expression of type 'size_t (wchar_t *restrict, const wchar_t *restrict, size_t)' (aka 'unsigned long (int *restrict, const int *restrict, unsigned long)') [-Werror,-Wincompatible-function-pointer-types] size_t (*foo)(wchar_t *restrict, const wchar_t *restrict, size_t, locale_t) = wcsxfrm_l; ^ ~~~~~~~~~ 3 errors generated.