Я реализую некоторые модульные тесты (с Unity в моем 64-битном Linux) для ПО, целевой платформой которого является 32-битный компьютер.
Я добавил флаг -m32
для прекращения получения предупрежденийдля «смешивания» 32- и 64-битных указателей.Проблема в том, что теперь я получаю предупреждения:
warning: unused variable
warning: unused parameter
И код, в котором я получаю эту ошибку:
static void checker1(uint8_t *addr,
uint64_t *data,
uint8_t b0,
uint8_t b1,
uint8_t d)
{
const uint32_t reg_addr_expec[] = {0};
const uint64_t reg_data_expec[] = {0xffffffef};
TEST_ASSERT_EQUAL_HEX(reg_addr_expec[0], addr[0]);
TEST_ASSERT_EQUAL_HEX64(reg_data_expec[0], data[0]);
TEST_ASSERT_EQUAL_UINT(1, b0);
TEST_ASSERT_EQUAL_UINT(0, b1);
TEST_ASSERT_EQUAL_UINT(0, d);
}
Я получаю эти предупреждения только при включении -m32
.Я понятия не имею, как это может произойти.Любая идея?
РЕДАКТИРОВАТЬ
Я заметил, что я получаю эти предупреждения только со значениями uint64_t
или uint32_t
, но с использованием TEST_ASSERT_EQUAL_HEX64
.похоже, это связано с типом uint64_t
.Проблема в том, что uint64_t
и -m32
нельзя смешивать при использовании gcc
(arm-gcc
не имеет этой проблемы)?