C++ Z_RPC:在头文件中声明静态变量,全局变量 Config单例 的问题(extern,static)

项目地址: https://github.com/ZsGyao/Z_RPC.git

个人学习写的项目,带有详细注释的C++RPC框架

问题引出:

  在开发z_RPC时,为了简化配置项时,创建了一个Config类来保存从配置文件中读出的配置项。

class Config {
 ...
        std::string m_log_path;                              // 日志存储路径
        std::string m_log_prefix;                            // 日志文件名
        int         m_log_max_file_size = 0;                 // 日志单个文件最大大小
        LogLevel    m_rpc_log_level     = LogLevel::DEBUG;   // rpc日志级别
        LogLevel    m_app_log_level     = LogLevel::DEBUG;   // app日志级别
        int         m_log_sync_interval = 500;               // 异步写入间隔
...
}

由于Config只读一次配置文件就可以保存所有的配置项,所以将Config做成的一个单例。

使用此单例模板:https://blog.csdn.net/weixin_48055768/article/details/129447531?spm=1001.2014.3001.5501

// “config.h”
typedef zrpc::Singleton<Config> Singleton_Conf;
std::share_ptr<Config> zRpcConfig 

// "config.cpp
auto zRpcConfig  =  Singleton_Conf::GetInstance("zrpc_server.xml"); // 获得Config单例

使用extern关键字 声明在头文件中,实现在 .cpp文件里,所有包含头文件的都可以只有全局的单例。

如果在头文件中声明static变量,会出现重定义的编译错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值