Max*_*rai 5 c++ enums compile-time
我必须在一些整数id的不同文件中写一些常量.例如:
#define MESSAGE_FIRST 0
Run Code Online (Sandbox Code Playgroud)
在其他文件中:
#define MESSAGE_ANOTHER 1
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在编译时自动获取该ID吗?就像是:
#define MESSAGE_AUTO GetNextId()
Run Code Online (Sandbox Code Playgroud)
我不能在这里使用枚举,因为这个指令将在不同的文件中.
谢谢.
ps GCC,Linux
您可以使用继承和函数重载来执行编译时计数器:
template<unsigned int n> struct Count { bool data[n]; };
template<int n> struct Counter : public Counter<n-1> {};
template<> struct Counter<0> {};
Count<1> GetCount(Counter<1>);
#define MAX_COUNTER_NUM 64
#define COUNTER_VALUE (sizeof(GetCount(Counter<MAX_COUNTER_NUM + 1>())) / sizeof(bool))
#define INC_COUNTER Count<COUNTER_VALUE + 1> GetCount(Counter<COUNTER_VALUE + 1>);
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到它.也适用于msvc.
| 归档时间: |
|
| 查看次数: |
768 次 |
| 最近记录: |