Pointers GCC-墙壁显示器';未使用的参数';与-m32和Unity测试框架混合使用uin64_t时发出警告

Pointers GCC-墙壁显示器';未使用的参数';与-m32和Unity测试框架混合使用uin64_t时发出警告,pointers,gcc,warnings,32bit-64bit,Pointers,Gcc,Warnings,32bit 64bit,我正在为一个目标平台是32位机器的软件实现一些单元测试(在我的Linux 64位中使用Unity) 我添加了标志-m32,用于停止获取32位和64位指针“混合”的警告。问题是,现在我获得了以下警告: warning: unused variable warning: unused parameter 我得到这个错误的代码是 static void checker1(uint8_t *addr, uint64_t *data,

我正在为一个目标平台是32位机器的软件实现一些单元测试(在我的Linux 64位中使用Unity)

我添加了标志
-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\u t
值或
uint32\u t
值获取这些警告,但使用
TEST\u ASSERT\u EQUAL\u HEX64
。它似乎与类型
uint64\u t
有关。问题是当使用
gcc
时,
uint64\u t
-m32
不能混合使用(
arm-gcc
没有这个问题)?

根据Unity文档,必须手动启用对64位功能的支持,除非Unity可以自动检测64位配置

这是我在添加
-m32
标志之前的情况,但现在我已经添加了它,Unity默认情况下不启用64位功能

通过在
gcc
命令中添加以下行,问题已得到解决:

-DUNITY_SUPPORT_64

我想知道
TEST\u ASSERT\u EQUAL\u HEX64
是如何计算的会很有用。使用
gcc-E
选项或
cpp
获取预处理器阶段后的外观。