从Intellisense中的枚举中评估字符串常量

时间:2014-07-08 09:30:12

标签: c++ visual-studio constants intellisense

有没有办法让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能够告诉我发现了什么和/或找到了什么。

1 个答案:

答案 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,因此在编译时无法识别具有该功能的版本。