将静态持续时间变量保留在数组中以便于处理是否有缺点?

时间:2016-10-03 02:22:18

标签: c arrays static function-pointers

我正在编写一个程序,该程序使用许多必须清理/更新/初始化的结构等等。我目前正在使用类似以下代码的内容来处理它们:

typedef struct Thing { ... } Thing;

typedef void (*ProcessThing)(Thing * target);

const int ThingCount = 3;

Thing ListOfThings[ThingCount];

Thing * ThingA = ListOfThings[0];
Thing * ThingB = ListOfThings[1];
Thing * ThingC = ListOfThings[2];

int DoStuffToThings(ProcessThing Action){
    int i;
    for(i = 0; i < ThingCount; i++){
        (*Action)(ListOfThings[i]);
    }
}

ThingAThingBThingC(等等)在编译时是已知的,但是当我开发程​​序时,它们的确切数量/性质正在发生变化。

此设置的主要好处是,如果需要,我可以通过添加另一个定义行并递增ThingN轻松添加更多ThingCount,并且可以使用更多{以新的方式轻松处理事物列表{1}}&#39; S

这不是我经常在示例代码中看到的一种技术,即使看起来它有用也是如此。我没有很多C语言的实践经验,并担心这种方法可能存在一些我没有看到的问题。有这样的问题,还是我过度紧张?

0 个答案:

没有答案