如何监视C模块中的静态数据?

如何监视C模块中的静态数据?,c,unit-testing,C,Unit Testing,假设我有一个包含一些静态数据的模块,如果我想使用测试文件监视这些值,有没有一种不使用getter的优雅方法呢?单元测试是直接包含.c文件的少数情况之一。这将允许您访问模块内的静态函数和变量 例如: #include <string.h> #include <assert.h> #include "file_to_test.c" int main() { Module_Init(); assert(strcmp(ModuleArray, "string_


假设我有一个包含一些静态数据的模块,如果我想使用测试文件监视这些值,有没有一种不使用getter的优雅方法呢?

单元测试是直接包含.c文件的少数情况之一。这将允许您访问模块内的
静态
函数和变量

例如:

#include <string.h>
#include <assert.h>

#include "file_to_test.c"

int main()
{
    Module_Init();
    assert(strcmp(ModuleArray, "string_to_test") == 0);
}
#包括
#包括
#包括“文件到测试.c”
int main()
{
模块_Init();
断言(strcmp(ModuleArray,“字符串到测试”)==0;
}
看一看。基本解决方案也适用于变量。我注意到图中的
ModuleArray
不是“静态数据”,意思是“通过关键字
static
限定”,因此它在模块外部可见-即使没有(尚未)声明它的头。当然,这可能只是一个bug——变量应该用
static
限定,除非需要在模块外部访问它,如果应该访问它,那么应该有一个声明它的头。