Неявное расширение типа аргумента функции или возвращаемого выражения запрещено MISRA-C: правило 2004 10.1 , как показано в следующем кодефрагмент:
void foo1(int16_t x);
int16_t foo2(void)
{
int8_t s8a;
...
foo1(s8a); /* not compliant */
...
return s8a; /* not compliant */
}
Но, насколько я понимаю, они ничем не отличаются от ситуации назначения:
s16a = s8a; /* compliant */
Какой смысл?Спасибо.