我有一个非常大的项目(不是我写的)。从我浏览的代码来看,我在项目中找不到任何全局状态,但我的同事告诉我项目中存在全局状态(这就是为什么我们只能在一个进程中创建一个上下文 session ,而不是在单个进程中创建多个上下文 session )。所以现在我想知道这个全局状态在代码库中的位置。
现在,当然,我可以问他全局状态在哪里。但我想我应该来 StackOverflow 看看是否有更好的替代方案(即不需要我花同事没有的时间的替代方案,并且当原始维护者离开时我可以在( future 的)项目上做一些事情我无法访问代码来提问)。如果程序/库中有全局状态,我如何找到/检测它?
(注意:我已将其标记为 C 和 C++,因为这些项目都是基于 C 和 C++ 的)
最佳答案
“全局”,就像全局变量一样,也许并不是它的全部真相。相反,您可能正在寻找只分配一次的东西(“单例”)。对于变量,在文件范围(函数外部)分配或作为静态分配的所有变量都具有此属性。 (它们也有静态存储持续时间。)因此,如果您要查找的此“状态”存储在变量中,请查找在文件范围内分配或静态分配的变量。
当然也有可能程序使用一些外部资源,这些资源只分配一次,例如文件、硬件资源或Windows注册 key 等。在这种情况下,它会变得更加复杂,并且没有通用的方法来找出答案。
关于c++ - 如何查找/检测项目中的全局状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22787404/