关于c++工厂模板宏的分析

0x00 缘起今天有个同事M君在技术群里发了一个如下c++的问题:在如下代码中#define REGISTER_FACTORY(FACTORY, BASE) \ void forceStaticLink##FACTORY() {} ...
摘要由CSDN通过智能技术生成

0x00 缘起

今天有个同事A君在技术群里发了一个如下c++的问题:
在如下代码中

#define REGISTER_FACTORY(FACTORY, BASE)                    \ 
  void forceStaticLink##FACTORY() {}                                                               \
  static Envoy::Registry::RegisterFactory</* NOLINT(fuchsia-statically-constructed-objects) */     \
                                          FACTORY, BASE>                                           \
      FACTORY##_registered

空函数的作用

void forceStaticLink##FACTORY() {}   

0x01 分析

我有点兴趣,查看了网上无果,没有明确说明这个的作用是什么。
群里的B君猜测是继承方面的用途,但是A君查看用途与定义,不应该往继承方面去考虑。
我当时觉得,这个函数名称来看,在运行时应该不用用到,所以就认为应该是编译告警相关,但是A君测试无告警。
A君自己认为这个应该是检查FACTORY是否合法,依据应该是c++语法。
寥寥几条消息,本以为这个问题会沉了。但是意想不到的事情发生了。

0x02 转机

B君在github上看到了

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值