Disable Right Click

Wednesday, February 17, 2016

X Macro (enum 문자열 출력)

enum 문자열을 쉽게 출력하는 방법이 있나 검색을 해보니 괜찮은 방법이 있다.
소스도 간결하고 이해하기도 쉽다.

X Macro 를 사용하면 된다. 개념도 쉽다.
https://en.wikipedia.org/wiki/X_Macro

선언은 아래와 같이
#define MYNUMS \
 X(ZERO, _T("빵")) \
 X(ONE, _T("하나")) \
 X(TWO, _T("둘"))

typedef enum {
#define X(Enum, string) Enum,
 MYNUMS
#undef X
};


차례대로 모두 출력은 그냥 이렇게
#define X(Enum, string) \
 std::cout << string << "\n";
 MYNUMS
#undef X


index 로 문자열 가져오는건
string GetName(int idx)
{
#define X(Enum, string) \
 if(Enum == idx) return string ;
 MYNUMS
#undef X

 return "";
}


참 쉽죠? ㅎㅎㅎ

참조 사이트
https://en.wikipedia.org/wiki/X_Macro
http://stackoverflow.com/questions/147267/easy-way-to-use-variables-of-enum-types-as-string-in-c/148610#148610

Tuesday, February 9, 2016

Saturday, February 6, 2016