有没有办法让Intellisense根据枚举值来评估字符串常量?
以下是我尝试的内容:
#define MessageIdToName(ID) \
(::MessageIdRange::LocalMessageStart <= ID && ID <= ::MessageIdRange::LocalMessageEnd) ? \
("Local Message") : \
(::MessageIdRange::CANMessageStart <= ID && ID <= ::MessageIdRange::CANMessageEnd) ? \
("CANMessage") : \
(::MessageIdRange::GlobalMessageStart <= ID && ID <= ::MessageIdRange::GlobalMessageEnd) ? \
("Global Message") : \
("Unknown")
namespace
{
static const char* MessageIdToNameFn(const uint32_t ID)
{
return
(::MessageIdRange::LocalMessageStart <= ID && ID <= ::MessageIdRange::LocalMessageEnd) ?
("Local Message") :
(::MessageIdRange::CANMessageStart <= ID && ID <= ::MessageIdRange::CANMessageEnd) ?
("CANMessage") :
(::MessageIdRange::GlobalMessageStart <= ID && ID <= ::MessageIdRange::GlobalMessageEnd) ?
("Global Message") :
("Unknown");
}
static const char* found = MessageIdToName(1025);
static const char* foundFn = MessageIdToNameFn(1025);
}
其中MessageIdRange是枚举,xMessageStart / End是枚举值。
我希望Intellisense能够告诉我发现了什么和/或找到了什么。
答案 0 :(得分:1)
似乎知识产权(在VS2013中)没有显示指针内容:
static const char* test = "test"; // Nothing for intelisense :-(
但它显示了数组的内容:
static const char test2[] = "test"; // intelisense shows the content of test2 :-)
因此,如果您将static const char* found
更改为static const char found[]
,则intelisense将显示found
的内容。
由于VS2013尚不支持constexpr
,因此在编译时无法识别具有该功能的版本。