The C90 standard allows implicit typing of variables and functions, and some C compilers still support legacy code by allowing implicit typing. But
it should not be used for new code because it might lead to confusion.
Noncompliant code example
extern x;
const x;
static fun(void);
typedef ( *pfi ) ( void );
Compliant solution
extern int16_t x;
const int16_t x;
static int16_t fun(void);
typedef int16_t ( *pfi ) ( void );