У меня есть следующий код для встроенной платформы, где int - 16 бит, а long int - 32 бит:
#define MULTIPLIER 0x1000
static void my_function(uint16_t i, void *p)
{
uint32_t start = MULTIPLIER * i;
...
}
Мой компилятор выдает мне предупреждение:
Warning 1 : lower precision in wider context: '*'
для этой строки.
Что это действительно означает?Я могу убрать предупреждение, изменив #define на
#define MULTIPLER 0x1000ul
(явно сделав его длинным без знака), но я хотел бы понять предупреждение.