gpt4 book ai didi

c++ - 我可以从静态 const char* 数组定义以下宏 "unstringifying"吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:56 24 4
gpt4 key购买 nike

我在 .c 文件中有以下内容(这是一个小得多的示例数组):

static const char* __someNames[] =
{
"Fox",
"Wulf",
"Cat"
};

然后我定义了一个这样的宏:

#define EXAMPLE(N) XXX

我希望 XXX 被 __someNames[N] 替换而没有 "..i.e 我想要

#define EXAMPLE(1)

扩展到:

Wulf

我该怎么做?

编辑

一些很酷的想法。这更多是出于求知欲,我想这样做。我喜欢 #include "file.h# 的想法,使用重新定义的宏两次。如果我也可以使用 boost 预处理器(我添加了 c++ 和 boost 标签来质疑)会怎么样 - 我是否能够绕过额外的“file.h”?每个字符串带有 #define 的那个也很酷,尽管考虑到我会有多少 #define 的想法有点少...

最佳答案

我认为你的 X 问题的解决方案(你问过 Y 解决方案)是扭转局面并使用宏将字符串放入,然后使用重新定义的相同宏来做你做的任何其他事情想做。

例如:

#define EXAMPLE(x)   #x,

static const char* __someNames[] =
{

#include "file.h"
};

#undef EXAMPLE
#define EXAMPLE(x) x,

enum animals
{
#include "file.h"
};

其中 file.h 包含:

EXAMPLE(Fox)
EXAMPLE(Wulf)
EXAMPLE(Cat)

关于c++ - 我可以从静态 const char* 数组定义以下宏 "unstringifying"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14885438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com