enum의 값들을 스트링으로 보려면?
글쓴이: khiny / 작성시간: 금, 2007/09/21 - 2:39오후
#include <stdio.h> typedef enum{ red, green, black } color; int main(void) { color box = green; printf("%d\n",box); return 0; }
위의 코드를 컴파일해서 실행해보면 1 이 찍힙니다.
근데 1이 아니라 green이라는 값이 찍히도록 하려면 어찌해야 할까요?
color가 정의된 부분을 통짜로 복사해서 적절한 함수를 하나 만든다면?
void print_color(color input){ switch(input){ case red : printf("red"); break; case green : printf("green"); break; case black : printf("black"); break; default : break; } }
이런식으로 말이죠.
근데 여기서는 3개의 값밖에 없지만, 저게 1000이상이 되고
중간에 #ifdef 등의 전처리가 들어간다면 print_color함수만드는 일이
꽤 어려워질것 같습니다.(전처리야 머 그대로 해주면 상관없을듯하지만)
저와같이 이런 비슷한 고민을 해 본 분이 있을것 같은데
다른 좋은 방법이 있는지 궁금합니다.
Forums:
..
구글링을 해보니 다음과 같은걸 발견했습니당.
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht20Ht/c_preprocessor_applications_en
아이디어가 좋네요.
윗분이 찾아낸거 보니깐 괜찮은 아이디어네요.
하지만 제가 가지고 있는 enum은 이미 천개가 넘는 양이라서,
저걸 다시 적용시켜서 변환할 생각을 하니...ㅡ.ㅡ;
코딩량을 최소한으로 변환시킬 방법을 생각해야겠네요.
치환을 잘 이용해서...해야할듯하네요.
typedef
이 코드를 이렇게 고치려했습니다.
그런데 중간에 전처리가 또 들어가면 대략 낭패가
함수로 만들어야하는건가요?
C++이라면
C++이라면
이렇게 할 수도 있읍니다.
생각해보니까
이대로라면 헤더에 넣고 쓰기에는 부적절하군요...
___________________________________
Less is More (Robert Browning)
___________________________________
Less is More (Robert Browning)
댓글 달기