我经常将一组相关的全局函数和变量包装在一个结构中,为它们创建一种“命名空间”,例如
extern struct foo_namespace {
int (* const foo)(int a);
int (* const bar)(void);
const int a;
const int b;
int x;
int y;
} foo;
然后将其与.c
设置函数和常量的文件链接。
这使我可以创建全局名称而不必担心名称空间中的内容以及稍后会出现的内容,它非常干净和方便。
但是我确实担心它通过要求通过指针调用函数而在我的代码中引入了少量的低效率,并且可能还有其他问题。
以这种方式对全局变量进行分组有哪些潜在问题和低效率,无论是程序设计、速度、可执行文件大小还是其他任何问题。
编辑:我刚刚在结构中运行了一个带有空函数的循环,以及一个常规函数。当未应用优化时,结构中的函数更快(20 秒对 26 秒)。优化后,全局函数被完全优化掉,速度更快。似乎除非函数可以内联,否则就速度而言,这没什么大不了的