use*_*267 5 c c++ global-variables mpi
我知道全局变量很糟糕,应该尽可能避免.但是,例如,在使用MPI编写并行程序时,某些变量只会初始化一次,并且永远不会更改(此任务的编号,任务总数等).将这些变量视为全局变量仍被视为不良做法吗?由于您几乎总是需要访问这些变量,因此在main中为它们创建一个类似乎很愚蠢,并将指针传递给程序中99%的所有函数.到目前为止,我的方法是将它们隐藏在命名空间mpi_glob中(对于C++的情况,我想我不会费心将它们放在C中的结构中来模拟命名空间).我想这个问题也适用于其他只设置一次的变量,例如单位系统等.
Pet*_*ker 5
全局变量"不好"的原因是它们引入了难以识别和跟踪的单独源文件之间的耦合.特别是,如果全局变量在程序中的某个点处具有意外状态,则很难确定它在何处被修改.
使用通过引用程序中的每个函数传递的局部变量替换全局变量并不能消除该问题.在设计方面,它是"流浪汉数据",即即使在不需要的地方也会徘徊的数据.
现在,重点在于,正如您所建议的那样,初始化一次但从未改变的数据没有使全局变量"变坏"的问题.由于问题不存在,因此不需要解决方案.
归档时间:
13 年,3 月 前
查看次数:
3302 次
最近记录: