Pointers GCC-墙壁显示器';未使用的参数';与-m32和Unity测试框架混合使用uin64_t时发出警告
我正在为一个目标平台是32位机器的软件实现一些单元测试(在我的Linux 64位中使用Unity) 我添加了标志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,
-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
获取预处理器阶段后的外观。