当使用 uin64_t 与 -m32 和 Unity 测试框架混合使用时,GCC -Wall 显示 'unused parameter' 警告
GCC -Wall displays 'unused parameter' warning when using uin64_t mixed with -m32 and Unity testing framework
我正在为目标平台为 32 位机器的软件实现一些单元测试(使用 Unity,在我的 Linux 64 位中)。
我添加了标志 -m32
以停止获取 'mixing' 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
没有这个问题)?
根据 Unity 文档,必须手动启用对 64 位功能的支持,除非 Unity 可以自动检测 64 位配置。
这是我在添加 -m32
标志之前的情况,但现在我已经添加了它,Unity 默认情况下不启用 64 位功能。
问题已通过在 gcc
命令中添加以下行解决:
-DUNITY_SUPPORT_64
我正在为目标平台为 32 位机器的软件实现一些单元测试(使用 Unity,在我的 Linux 64 位中)。
我添加了标志 -m32
以停止获取 'mixing' 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
没有这个问题)?
根据 Unity 文档,必须手动启用对 64 位功能的支持,除非 Unity 可以自动检测 64 位配置。
这是我在添加 -m32
标志之前的情况,但现在我已经添加了它,Unity 默认情况下不启用 64 位功能。
问题已通过在 gcc
命令中添加以下行解决:
-DUNITY_SUPPORT_64