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