diff options
Diffstat (limited to 'Runtime/Utilities/StaticInitiator.h')
-rw-r--r-- | Runtime/Utilities/StaticInitiator.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Runtime/Utilities/StaticInitiator.h b/Runtime/Utilities/StaticInitiator.h new file mode 100644 index 0000000..bbcdbee --- /dev/null +++ b/Runtime/Utilities/StaticInitiator.h @@ -0,0 +1,27 @@ +#pragma once + +// 静态构造函数 +#include "ThirdParty/StaticConstructor/include/StaticConstructor.h" + +typedef void(*StaticFunc) (); + +// 自动初始化静态数据 +class StaticFuncInvoker +{ +public: + // Default Constructor: + StaticFuncInvoker(StaticFunc func) + { + if (func) + func(); + } +}; + +// 调用具名的static函数 +#define InvokeStaticFunc(func)\ + static StaticFuncInvoker staticInvokerOf_##func(func); + +// 用来初始化当前cpp里的静态变量 +#define InitializeStaticVariables(lambda)\ + static StaticFuncInvoker staticInvoker(lambda); + |