gpt4 book ai didi

c - 将结构用作 c "namespace"的缺点

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:20 25 4
gpt4 key购买 nike

例如,我经常将一组相关的全局函数和变量包装在一个结构中,为它们创建一种“命名空间”

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 文件链接。

这使我可以创建全局名称,而不必担心 namespace 中的内容以及以后的内容,它非常干净方便。

不过,我确实担心它会要求通过指针调用函数,从而在我的代码中引入少量低效率,并且可能还有其他问题。

以这种方式对全局变量进行分组的所有潜在问题和效率低下是什么,无论是程序设计、速度、可执行文件大小还是其他方面的问题。

编辑:我只是运行了一个循环,其中包含一个结构中的空函数和一个常规函数。当没有应用优化时,结构中的函数更快(20 对 26 秒)。优化后,全局函数被完全优化掉并且速度更快。似乎除非可以内联该函数,否则就速度而言这并不是什么大问题

最佳答案

由于结构对齐分配了更多内存(更多信息 here)。结构实例将具有其最宽标量成员的对齐方式。

关于c - 将结构用作 c "namespace"的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45513994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com