Why is this an issue?
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 );
Resources
- MISRA C:2004, 8.2 - Whenever an object or function is declared or defined, its type shall be explicitly stated
- MISRA C:2012, 8.1 - Types shall be explicitly specified
- CERT, DCL31-C. - Declare identifiers before using them