c++ 通过宏生成静态的变量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TH_NUM/article/details/86591248
#include <iostream>
#include "nnvm/c_api.h"
using namespace std;

class Base {
    virtual void f(){};
};
class Derived: public Base {};


Derived& __REGISTER__(const std::string& name){

    Derived * e =new Derived();
    cout<<"function __REGISTER__ OpName:"<<name<<endl;
    return *e;
}
#define DMLC_ATTRIBUTE_UNUSED __attribute__((unused))

#define REGISTER_VAR_DEF(OpName) \
     static DMLC_ATTRIBUTE_UNUSED Derived& __make_## NnvmOp ## _ ## OpName

#define REGISTER_OP(OpName) \
    REGISTER_VAR_DEF(OpName)=  \
    __REGISTER__(#OpName)
    int main()
{

    REGISTER_OP(hello);  //生成静态变量 __make_NnvmOp_hello

    cout<< typeid(__make_NnvmOp_hello).name()<<endl;
	 return  0;
	}

输出:
function __REGISTER__ OpName:hello
7Derived

猜你喜欢

转载自blog.csdn.net/TH_NUM/article/details/86591248