版权声明:本文为博主原创文章,未经博主允许不得转载。 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