【发布时间】:2015-07-07 08:14:20
【问题描述】:
我想将全局变量封装在一个“数据管理器模块”中。 只能通过避免所有丑陋的功能进行访问 全局变量问题...所以内容对用户完全隐藏。 有没有现成的概念?这样的实现怎么可能 看起来像? “data-manager-module”中的值应该如何存储?
【问题讨论】:
-
看起来你正在发明 C++。说真的,您可以在源文件中为此类变量使用
static:然后其他编译单元将看不到它们。 -
@Bathsheba OO 是一种进行程序设计的方式,而好的程序设计与语言无关。一些语言仅仅提供方便的特性来简化面向对象的设计。
-
特别是对于 small 嵌入式系统中的嵌入式 C,这是一个坏主意。仅通过函数访问全局状态通常比访问全局变量要慢。但是,您可以有几个全局变量,通过定义一些
struct来打包全局状态,并有一个该类型的全局变量。 -
@BasileStarynkevitch 性能甚至不应该是一个参数,或者编译器在内联方面做得很差。可悲的是,许多嵌入式编译器的质量有问题,所以你最终可能会根据编译器的糟糕程度调整程序设计。
-
在这种情况下,您只能通过链接时间优化获得内联(或者通过一些全局函数并提供
static inline函数来访问它)