gpt4 book ai didi

我可以打印 #defines 给定它们在 C 中的值吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:11:10 25 4
gpt4 key购买 nike

我有

#define ADD 5
#define SUB 6

如果 ADD 和 SUB 的值为 5 和 6,我可以打印它们吗?

最佳答案

没有。

预处理器删除了 defined 符号的名称,因此编译器永远不会看到它们。

如果这些名称在运行时很重要,则需要将它们编码为比预处理器符号名称更持久的东西。也许是一个包含字符串和整数的表:

#define DEFINE_OP(n) { #n, n }

static const struct {
const char *name;
int value;
} operators[] = {
DEFINE_OP(ADD),
DEFINE_OP(SUB),
};

这使用字符串化预处理器运算符 # 来避免重复。

有了上面的内容,你就可以轻而易举地编写查找代码了:

const char * op_to_name(int op)
{
size_t i;

for(i = 0; i < sizeof operators / sizeof *operators; ++i)
if(operators[i].value == op)
return operators[i].name;
return NULL;
}

关于我可以打印 #defines 给定它们在 C 中的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12509038/

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