gpt4 book ai didi

Cmocka-错误 : No Entries for symbol

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:19 27 4
gpt4 key购买 nike

我刚刚开始使用 Cmocka,我已经在这个问题上停留了一段时间。我有一个正在尝试构建的 cmocka 项目。当我尝试使用“make”时,我看到了错误。

[ ERROR ] --- No entries for symbol __wrap_i2c_read.

此外,我在调用 mock()

的行的 mock_i2c.c 文件中看到一个错误

Could not get value to mock function __wrap_i2c_read.

现在我只是想模拟一个 true/false 值来让它工作。所以我的模拟看起来像

bool __wrap_i2c_read(void)
{
return (mock());
}

我检查过我在测试中调用了 will_return(__wrap_i2c_read, true);

在我的 Makefile 中我有 LDFLAGS += -Wl,--wrap=i2c_read我在 mock_i2c.c 文件中包含了 cmocka.h

这似乎不是这个模拟函数的问题,因为如果我不使用它,我会在该文件中的其他模拟函数中遇到同样的错误。我不确定还需要什么其他信息,请告诉我。有人知道这是什么意思/以前见过吗?

谢谢。

编辑:所以我想我已经弄清楚为什么会出现此错误。我正在测试的函数中有一个 for 循环。从这个函数调用模拟函数。一旦我删除循环,错误就会消失。这可能与 will_return 将模拟值排队的方式/时间有关吗? for 循环妨碍了?

Edit2:好的,看来我只是没有排队足够的模拟值。

最佳答案

您的编辑 2 就是线索!

您必须像调用 mock 一样频繁地调用 will_return

对于您的 FUT(被测函数)的每次调用,都会调用 mock()。因此,您需要在调用 FUT 之前使用 will_return,就像调用 FUT 一样频繁。 will_return 将一个元素放入堆栈。 mock() 将从这个堆栈中取出一个元素。因此调用 will_return 一次和 mock() 两次将导致下溢,最终导致您提到的 cmocka 错误。

也许您想使用 will_return_alwayswill_return_count

关于Cmocka-错误 : No Entries for symbol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44377034/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com