MISRA Discussion Forums

Full Version: 5.9 and static function or global variable
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
As we know, static function or global variable has only internal linkage, is invisible for other module,
Why their name can not be defined as same as ones in other translation unit?
For example, below case :
/*tunit1.c*/
static int8_t count;
static void foo ( void )
{
}

/*tunit2.c*/
static int8_t count;
static void foo ( void )
{
}
The aim of the rule is to prevent any user confusion that might arise.

The user calling "foo" in tunit2.c might have forgotten that there is a function with that name defined in tunit2.c and assume that they are calling the function declared in tunit1.c, even though the other function is defined as "static".