【发布时间】:2015-02-25 16:28:09
【问题描述】:
是否可以像这样创建编译时常量:
// event.h
#define REGISTER_EVENT_TYPE() ... // Returns last_returned_number+1
// header1
#define SOME_EVENT REGISTER_EVENT_TYPE()
// header2
#define SOME_OTHER_EVENT REGISTER_EVENT_TYPE()
SOME_EVENT 为 0,SOME_OTHER_EVENT 为 1。
尝试了以下代码:
#define DEF_X(x) const int x = BOOST_PP_COUNTER;
#define REGISTER_EVENT_TYPE(x) BOOST_PP_UPDATE_COUNTER()DEF_X(x)
#include REGISTER_EVENT_TYPE(SOME_EVENT_TYPE)
但包含吃常量声明。
【问题讨论】:
-
您想要一个每次“调用”时都返回不同常量的宏?我很确定这是不可能的。
-
宏是编译时的,你在执行时要求数据...不可能。
标签: c++ c++11 boost boost-preprocessor