我有struct analyzer_t
和analyzers_t
,其中有3个analyzer_t
类型的变量。 analyzers_t
在代码中出现的次数更多,我必须写入/调用所有内容3次,但差异很小。我附上writeFiles
作为例子。
任何人都可以给我一个线索,如果(以及如果,那么如何)我可以重构这个?我想把数组放在analyzers_t
中。但正如我所说,我以不同的方式调用函数(请参阅writeFiles
中的含义)。
typedef struct analyzer_t
{
unsigned char *buff;
size_t StartPosition;
}analyzer_t;
typedef struct analyzers_t
{
analyzer_t analyzer1;
analyzer_t analyzer2;
analyzer_t analyzer3;
unsigned char *Sequence;
}analyzers_t;
int writeFiles(char *name, analyzers_t *analyzers )
{
if (analyzers->analyzer1.StartPosition > 10)writeFile(name,
analyzers->analyzer1.buff, &analyzers->analyzer1.StartPosition, dir1);
if (analyzers->analyzer2.StartPosition > 10)writeFile(name,
analyzers->analyzer2.buff, &analyzers->analyzer2.StartPosition, dir2);
if (analyzers->analyzer3.StartPosition > 10)writeFile(name,
analyzers->analyzer3.buff, &analyzers->analyzer3.StartPosition, dir3);
return 1;
}
答案 0 :(得分:0)
为什么你的analyzer_t
中没有三个analyzers_t
的数组,然后你可以为每个数组调用相同的函数。
答案 1 :(得分:0)
在功能中执行常见功能并仅传递不同的信息:
void writeAnalyzer(analyzer_t * analyzer, char * name, char * dir) {
if (analyzer->StartPosition > 10)
writeFile(name, analyzer->buff, &analyzer->StartPosition, dir);
}
并且不要在自定义类型中使用后缀_t
。这些是为标准C库保留的。