在调整某些给定接口时,我遇到了扩展头文件使用的问题,其中包含大量#defines
.
我所拥有的是这样的:
#define STATUS_OK 0x00
#define STATUS_FAIL 0x01
#define STATUS_WAIT 0x02
#define STATUS_ILLEGAL 0x03
#define STATUS_FULL 0x04
...
有很多这样的定义,我很高兴,因为我不必把它们都写出来。
但是,虽然我可以很好地将它们用于switch
,if
和其他语句作为等的替代品0x00
,但我现在想要相反的方向。
所以,有了0x00
,我想打印出标识符“STATUS_OK”。
据我所知,这是不可能的,但是有什么好的解决方法可以使它成为可能?!是否可以设置这样的数组:
arrayNames[STATUS_OK] = _STATUS_OK_
STATUS_OK
将在哪里解决0x00
并将解决到“ STATUS_OK _STATUS_OK_
”?
此外,我正在寻找一种解决方案,它使用尽可能少的内存来做到这一点。
这将是我希望能够做到的:
prinf("%s",resolve(0x00));
-> "STATUS_OK"
我希望,我明确了我在寻找什么。
编辑:
感谢所有人,快速而有用的回复!我将使用 Larsmans 解决方案,并可能尝试将其与 qrdl 之一结合起来。可能需要一段时间,完成后我将替换此编辑。