【发布时间】:2013-08-31 11:35:56
【问题描述】:
我已经阅读了很多关于为什么全局变量不好以及为什么不应该使用它们的文章。然而,大多数常用的编程语言都以某种方式支持全局变量。
所以我的问题是仍然需要全局变量的原因是什么,它们是否提供了一些无法替代实现的独特且不可替代的优势?与用户指定的自定义间接检索相比,全局寻址是否有任何好处以检索其本地范围之外的对象?
据我所知,在现代编程语言中,全局寻址带来的性能损失与计算内存地址的每个偏移量相同,无论是从“全局”用户内存开头的偏移量还是从this 或任何其他指针。因此,在性能方面,用户可以使用公共指针间接在需要它们的狭义情况下伪造全局变量,而不会损失实际全局变量的性能。还有什么?真的需要全局变量吗?
【问题讨论】:
-
从这里你会得到一些信息。 stackoverflow.com/questions/176118/…
-
@Gangadhar - C 中没有名称空间,但在 C++ 中我可以与名称空间共享可见性,那么这与使用可见性仅限于需要的地方的全局有什么不同?
-
@user2341104 正如您所说,C 中没有命名空间。C 中不可能声明或定义全局,其可见性仅限于需要的地方(声明静态全局变量以限制范围除外的用法。)。并且我已将上面的链接与此行相关联**您必须问自己:在全球范围内是否真的需要**。这是您从那里获得的信息。
标签: c++ c global-variables