在C/ c++中,全局变量像我的教授认为的那样糟糕吗?


当前回答

我想用另一个问题来回答这个问题:你使用singeltons吗/ singeltons不好吗?

因为(几乎所有)单变量的使用都是一个美化的全局变量。

其他回答

我想用另一个问题来回答这个问题:你使用singeltons吗/ singeltons不好吗?

因为(几乎所有)单变量的使用都是一个美化的全局变量。

绝对不是。但是滥用它们……这很糟糕。

出于某种原因而无意识地删除它们只是……盲目的。除非您知道其优点和缺点,否则最好避免使用全局变量,并按照您学到的方法进行操作,但全局变量并没有什么隐含的错误。当你了解了利弊后,最好自己做决定。

在多线程应用程序中,使用局部变量代替全局变量以避免竞态条件。

当多个线程访问共享资源时,至少有一个线程对数据有写访问权,就会发生竞争条件。然后,程序的结果是不可预测的,它取决于不同线程访问数据的顺序。

更多信息请访问https://software.intel.com/en-us/articles/use-intel-parallel-inspector-to-find-race-conditions-in-openmp-based-multithreaded-code

是的,因为如果你让不称职的程序员使用它们(阅读90%,尤其是科学家),你最终会得到600多个全局变量分布在20多个文件和一个12000行的项目中,其中80%的函数采用void,返回void,完全在全局状态下运行。

除非你了解整个项目,否则你很快就不可能在任何一个点上理解正在发生什么。

当涉及到配置时,全局是很好的。当我们希望我们的配置/更改对整个项目产生全局影响时。

因此,我们可以改变一个配置,并将更改指向整个项目。但我必须警告你,你必须非常聪明地使用全局变量。