我对 TDD 有点陌生,尽管我已经使用 C 有一段时间了。因此,我使用 ceedling 来测试我的嵌入式项目。
我可以rake test:all
在 gcc 中,但我现在正试图将其移至嵌入式目标模拟器。我通过“project.yml”文件指定我的交叉编译器、链接器等。
当 Irake test:all
时,“编译 cmock.c”时出现错误(其他几个文件编译没有问题):
< path_to_cmock >/cmock.c:17:31: 错误:数组 'CMock_Guts_Buffer' 的大小太大
在此之后还有其他错误,但这是引发它们的错误。
当我转到 时cmock.c
,我在文件顶部看到这个:
#ifdef CMOCK_MEM_DYNAMIC
static unsigned char* CMock_Guts_Buffer = NULL;
static CMOCK_MEM_INDEX_TYPE CMock_Guts_BufferSize = CMOCK_MEM_ALIGN_SIZE;
static CMOCK_MEM_INDEX_TYPE CMock_Guts_FreePtr;
#else
static unsigned char CMock_Guts_Buffer[CMOCK_MEM_SIZE + CMOCK_MEM_ALIGN_SIZE];
static CMOCK_MEM_INDEX_TYPE CMock_Guts_BufferSize = CMOCK_MEM_SIZE + CMOCK_MEM_ALIGN_SIZE;
static CMOCK_MEM_INDEX_TYPE CMock_Guts_FreePtr;
#endif
完美,所以我只需要找到这些声明的位置。我进行了文本搜索,却发现它们没有在任何地方声明……所以我怀疑它们来自 ceedling 中的默认值。
我找到了 CMOCK 的文档,并在“编译选项”下,
还存在许多用于自定义 cmock 体验的#defines...
它继续列出我在源代码中找到的#defines,但没有说明在哪里可以找到它们。我试图用适当的定义制作一个包含文件,并通过“project.yml”传递包含文件,但没有成功。
我怀疑答案非常简单,只是在我搜索过的任何地方都没有概述。感谢您的时间,