我的项目是在linux平台下用C语言开发的。我也在使用libxml2。可执行文件由分布在多个c文件中的多个模块组成。
我有一个包含20个可配置参数的配置文件( Xml )。
假设我正在读取模块M1中的配置文件参数。但我需要在其他大模块M2和M3中使用它们。
有没有什么有效的方法可以使可配置参数对所有模块可用,而不需要使用全局变量来读取模块M1中的参数。
具体地说,是否有其他方法/设计可以避免使用全局声明的变量来读取配置参数。
发布于 2014-07-28 22:53:23
首先,如果这些值只被读取一次,并且在那之后就再也没有改变过,那么将它们存储为全局变量并不是什么大问题。
处理此问题的最佳(通用)方法是读取XML,将值转换为其本机类型(将数字作为xml字符串转换为整数),并将其集中存储在一个结构中。只会有一个结构的实例化,但不要强调它是一个“单例”。该结构可以是全局可访问的,也可以将指向它的指针传递给不同的模块。
发布于 2014-07-28 22:56:47
在这种情况下,我确实会使用全局变量,您的变量似乎确实被所有模块全局使用。但是,为了减轻全局名称空间污染,您需要将这些变量放入一个结构中。
创建一个名为ConfigGlobals或其他描述性名称的结构,并简单地为每个配置选项向其中添加成员。这增加了清晰度,因为您可以一目了然地知道哪些变量是配置的,这意味着您只需要将一个名称放入全局作用域。
编辑:注意:我看到这个答案与James Curran的答案相似,很抱歉,复制完全是巧合,我不是故意复制你的,我在你发帖之前就开始写这篇文章了。
发布于 2014-07-28 23:02:45
解决这个问题的更好方法是: 1-将所有配置变量放在一个结构中2-为该结构创建一个静态变量(因此作用域只在该文件中) 3-使用getter和setter读取和写入参数
通过这样做,如果明天你的应用程序是多线程的,那么你可以在Setter和getter中通过互斥来保护你的参数。通过这种方式,它将是一种更干净的访问方法。
https://stackoverflow.com/questions/24997828
复制相似问题