cc -pthread -Wall -Wextra -Werror -Wno-error=deprecated -Wno-error=deprecated-declarations string/strxfrm_l.c -o string/strxfrm_l -D_POSIX_C_SOURCE=202405L -lm -lpthread -liconv string/strxfrm_l.c:5:61: error: type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int] 5 | size_t (*foo)(char *restrict, const char *restrict, size_t, locale_t) = strxfrm_l; | ^ | int string/strxfrm_l.c:5:73: error: use of undeclared identifier 'strxfrm_l'; did you mean 'strxfrm'? 5 | size_t (*foo)(char *restrict, const char *restrict, size_t, locale_t) = strxfrm_l; | ^~~~~~~~~ | strxfrm /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_string.h:91:9: note: 'strxfrm' declared here 91 | size_t strxfrm(char *__s1, const char *__s2, size_t __n); | ^ string/strxfrm_l.c:5:10: error: incompatible function pointer types initializing 'size_t (*)(char *restrict, const char *restrict, size_t, int)' (aka 'unsigned long (*)(char *restrict, const char *restrict, unsigned long, int)') with an expression of type 'unsigned long (char *, const char *, unsigned long)' [-Wincompatible-function-pointer-types] 5 | size_t (*foo)(char *restrict, const char *restrict, size_t, locale_t) = strxfrm_l; | ^ ~~~~~~~~~ 3 errors generated.