美文网首页
C++函数注册技术

C++函数注册技术

作者: 擎烛而走_b2ce | 来源:发表于2019-12-20 16:09 被阅读0次

C++函数注册技术


  • 关键字

    Lambda、函数模板、宏、预编译文件

  • 代码

    class RunRegisterFunction
    {
    public:
        template<typename T> RunRegisterFunction(const T& f){f();}
    };
    //名字合并
    #define NAMECAT(name1, name2) name1##name2
    //以cpp对应的行号
    #define LINENAME(name1, name2) NAMECAT(name1, name2)
    //注册函数开始
    #define AutoRegisterBegin\
            static RunRegisterFunction LINENAME(s_runRegisterFunction, __LINE__)([](){
    //注册函数结束
    #define AutoRegisterEnd\
            });\
    
  • 说明

    在函数外,通过创建静态类,执行构造函数的方法,构造函数传入一个Lambda表达式,用户实际是在Lambda表达式中完成逻辑部分,为了解决静态类名重命名的问题,使用C++的自带宏

    __LINE__   //CPP对应的行号
    

    完成静态类创建,再在外部用AutoRegisterBegin封好即可。

    static的作用域只适用于当前cpp,注意!!

  • 使用场景

    工厂模式添加新工厂时,方便在对应cpp后适用Begin和End宏,然后将新增的工厂类添加到工厂生产者类表中,完成工厂类的注册。

    更广泛一点的说,可以在一个cpp任意的位置,执行类的静态方法,单例的方法等。

相关文章

  • C++函数注册技术

    C++函数注册技术 关键字Lambda、函数模板、宏、预编译文件 代码class RunRegisterFunct...

  • C++反射的一种实现方式

    主题C++ 一、注册辅助类 ClassRegistry:模板函数,用于data、module、contextdat...

  • C、C++、Java? Java Native Interfac

    C、C++、Java? Java Native Interface(JNI)特辑--动态注册JNI函数 排版不佳建...

  • Lua绑定流程

    绑定是为了实现将C++代码注册到lua环境,使得lua可以调用C++函数。https://blog.csdn.ne...

  • Android - NDK 动态注册方法

    NDK中动态注册JNI方法。 Java中定义了native方法后,在C/C++中使用JNI_OnLoad函数来注册...

  • C++ 虚函数表剖析

    一、概述 为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍...

  • C++ 虚函数表剖析

    一、概述 为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍...

  • Android JNI—项目配置及用法

    主要记录下Android Studio下JNI项目搭建配置方法、C++支持方式、函数静态动态注册,打印LOG到控制...

  • windows逆向3

    VC 程序内存和编译的一些特征C++ 构造函数C++ 成员函数C++ 析构函数C++ 全局对象的构造C++ 全局对...

  • windows下 c++ 崩溃时,生成dump

    在程序启动时注册处理函数 注意 Release版本,需要配置: c/c++>优化>优化 选择 已禁用/Od c/...

网友评论

      本文标题:C++函数注册技术

      本文链接:https://www.haomeiwen.com/subject/fujinctx.html