GCC -Wall отображает предупреждение «неиспользуемый параметр» при использовании uin64_t, смешанного с -m32 и инфраструктурой тестирования Unity - PullRequest
0 голосов
/ 18 июня 2019

Я реализую некоторые модульные тесты (с 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 не имеет этой проблемы)?

1 Ответ

0 голосов
/ 18 июня 2019

Согласно документации Unity, поддержка 64-битной функциональности должна быть включена вручную, если Unity не может автоматически определить 64-битную конфигурацию.

Это был мой случай до добавления флага -m32, но теперь, когда я его добавил, Unity не включает 64-битную функциональность по умолчанию.

Проблема была решена путем добавленияследующая строка команды gcc:

-DUNITY_SUPPORT_64
...