2014-07-08 3 views
0

Intellisense에서 열거 형 값을 기반으로 문자열 상수를 계산할 수 있습니까?Intellisense의 enum에서 문자열 상수 계산

는 여기에 내가 무엇을 시도했다입니다 : MessageIdRange가 열거하고 xMessageStart/끝 열거 값입니다입니다

#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); 
} 

.

Intellisense에서 found 및/또는 foundFn이 무엇인지 알려주 리라 기대합니다.

답변

1

(VS2013)에 intelisense 포인터의 내용이 표시되지 않는 것 같다

static const char* test = "test"; // Nothing for intelisense :-(

을하지만 배열의 내용을 보여줍니다 그래서 당신은 static const char* foundstatic const char found[], intelisense로 변경하는 경우

static const char test2[] = "test"; // intelisense shows the content of test2 :-) 

found의 콘텐츠가 표시됩니다.

VS2013은 아직 constexpr을 지원하지 않으므로이 기능이있는 버전을 컴파일 할 때 알 수 없습니다.

+0

감사합니다. 이상하게 보입니다. []를 사용해야하지만 여기에서 작동합니다. – kjhf

+0

흥미롭게도 컴파일되지 않습니다. '오류 C2440 :'초기화 ':'const char * '에서'const char [] '로 변환 할 수 없습니다. 매우 간단한'const char found [] = (true? "A": "B"); – kjhf