Я использую GCC 5.2.1 с ARM Cortex A9 и компилирую с -std = c11 и -Wformat-signatureness.
Как избежать предупреждения -Wormat в этом случае?
int main()
{
enum
{
A = 0,
B
};
char buff[100];
snprintf(buff, 100, "Value is 0x%04x\n", A);
return 0;
}
Это выдает предупреждение:
format '%x' expects argument of type 'unsigned int', but argument 4 has
type 'int' [-Werror=format=]
snprintf(buff, 100, "Value is 0x%04x\n", A);
^
Явное приведение дает тот же результат:
format '%x' expects argument of type 'unsigned int', but argument 4 has
type 'int' [-Werror=format=]
snprintf(buff, 100, "Value is 0x%04x\n", (uint16_t)A);
^