【发布时间】:2016-06-07 12:41:33
【问题描述】:
我有一个提供记录器服务的静态库,它链接到我的 C/C++ 项目中的几个子组件。
我想将logger 中定义的全局变量的范围设置为链接此库的所有实体(例如,log_level),我想知道将库更改为动态是否可以诡计……会吗?
【问题讨论】:
-
您似乎以非标准方式使用“范围”一词,当然“设置全局变量的范围”的概念毫无意义。全局变量的作用域是全局的,这就是为什么它是一个 global 变量。
-
所以,如果我理解正确,您希望共享单例
logger实例的特定库具有不同的log_level值吗?对于这种情况,共享库不会改变任何东西。 -
@MSalters,我想你是对的,但我想强调的是,如果我将静态库链接到我的流程中的多个组件,它将为每个此类组件生成该库的单独实例,并且不启用共享全局变量。
-
@πάνταῥεῖ,我实际上希望进程中所有组件的日志级别相同。这就是为什么我想与与我的记录器库链接的所有组件共享 log_level
-
@Zohar81:如果它真的是一个全局变量,那应该已经是这样了。这就是为什么一个好的问题具有重现问题所需的最少代码的原因。你能构造一个
libFoo和LibBar使得每个都有自己的libLog::logLevel吗?
标签: c++ c shared-libraries static-libraries