Pal*_*han 0 c c++ macros boost c-preprocessor
我在一个.c文件中有以下内容(这是一个小得多的数组来举例说明):
static const char* __someNames[] =
{
"Fox",
"Wulf",
"Cat"
};
Run Code Online (Sandbox Code Playgroud)
然后我会定义一个像这样的宏:
#define EXAMPLE(N) XXX
Run Code Online (Sandbox Code Playgroud)
在哪里,我希望XXX被替换为__someNames[N]没有"..ie我想
#define EXAMPLE(1)
Run Code Online (Sandbox Code Playgroud)
扩展到:
Wulf
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
编辑
一些很酷的想法.这更多是出于对我想要做的好奇心的好奇心.我喜欢#include"file.h#两次使用重新定义的宏的想法......如果我也可以使用boost预处理器(我添加了c ++和boost标签来提问) - 我是否可以绕过额外的"file.h"?每个字符串#define的字符串也很酷,但考虑到我会有多少#defines ...
我认为你的X问题的解决方案(你已经问过Y解决方案)就是转过头来使用宏来放入字符串,然后使用相同的宏重新定义来做你想做的其他事情.
例如:
#define EXAMPLE(x) #x,
static const char* __someNames[] =
{
#include "file.h"
};
#undef EXAMPLE
#define EXAMPLE(x) x,
enum animals
{
#include "file.h"
};
Run Code Online (Sandbox Code Playgroud)
其中file.h包含:
EXAMPLE(Fox)
EXAMPLE(Wulf)
EXAMPLE(Cat)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1724 次 |
| 最近记录: |