enum 에 대해서..
글쓴이: moonzoo / 작성시간: 금, 2003/10/10 - 4:44오후
여러분들은 enum을 잘 사용하시나여?
예를 들어
1번.
#define A 0
#define B 1
#define C 2
2번.
enum mytype {A,B,C};
1번과 2번중에 어떤 것을 선호하시는지?
전 enum을 잘 안써봤는데.. enum을 쓰시는 분이 있다면
어떤 이유로 사용하시는지 등이 궁금합니다..
또 한가지..
enum mytype {A,B,C}; 과
int A=0; int B=1; int C=2;과의 차이는 있나여?
단지 보기좋게 하기위해선는 아닐텐데..
enum을 사용하는 이유가 궁금하네요..
Forums:
저는 2번 enum.enum은 typecheking해주지 않습니까
저는 2번 enum.
enum은 typecheking해주지 않습니까?
가질 수 있는 값이 '한정'되는 것이 아닌지...
그리고 '보기 좋다' 라는 것이 readability를
의미하는 것이 아닙니까?
단순히 int i; 보다는 int file_size; 와 같은
것이 readability를 높이는 것과 마찬가지일듯.
그리고 비슷한 것끼리 '묶는' 것이 좋아보여서...
-_-; 너저분했습니다만,
1. typechecking
2. readability
3. '묶어주세요' (갑자기 hentai가 연상... -_-;;)
때문에 enum사용합니다.
What a Cool Days!!!
이런 이유도 있겠네요.#define A 0#define
이런 이유도 있겠네요.
#define A 0
#define B 1
#define C 2
A가 1이고 B가 2 C가 3으로 바뀌었다고 했을때, define이라면
하나씩 다 바꾸어주어야 겠지요. 하지만 enum 이라면
#define _NUMBER{A=1, B, C}
이렇게만 해주면 됩니다.
Re: enum 에 대해서..
gdb에서 보여요. :D
자신이 짠 프로그램을 다른 사람이 사용할 경우 함수의 인자로 flag가
자신이 짠 프로그램을 다른 사람이 사용할 경우 함수의 인자로 flag가 들어간다면 enum 타입으로 하고 헤더파일에 정의해 놓으면 사용자가 알아보기도 쉽겠죠.
몽땅 define이면 어떤게 어디에 쓰는 flag인지 어떻게 알겠습니까..-_-;;;
단, open()처럼 |(or)을 사용하는 flag일 경우는 define을 써야겠죠.
노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5
열거되는 값들을 하나의 타잎으로 묶어주는데에서는, enum이 당연히 선호
열거되는 값들을 하나의 타잎으로 묶어주는데에서는, enum이 당연히 선호되겠지요.
하지만 습관상 #define을 쓰는 것이.. 버릇이 돼버립니다.
enum을 사용하면, compiler에게 hint를 주기 때문에 warning 등을 얻어낼 수 있습니다.
대신 -Wall 등으로 경고옵션을 많이 켜야겠지요.
그래서 대개 #define은 prefix를 두어 사용합니다. prefix가 없는 것들은 정말 아주 오래전부터 쓰이던것들이라서 그냥 사용되는것 같습니다.
그리고, flag에서도 enum을 사용하여 bit or 를 할 수 있는걸요 :)
---
http://coolengineer.com
enum을 많이 사용하려고 합니다.
코딩하다보면 똑같은 int라도 서로 구분해야 할 경우가 많습니다. 예들 들면...
뭐 이런 어거지같은 :) 코드가 있다고 하면 저는 이렇게 자주 씁니다.
enum type을 int로 변환하는 경우는 묵시적인 변환이 가능하지만
그렇지 않은 경우는 모두 직접 캐스팅을 해줘야 합니다. 캐스팅을
'나는 내가 뭘하는지 알고 있어'라고 컴파일러에게 알려주는 것이라고
보고, 서로 다른 타입간에 연산이 되는 경우 (예에서는 인덱스용 변수가
값으로 잘못 할당되는 실수)를 막기 위해서 저는 저런식으로 사용합니다.
그런데 값이 int가 아니면 저런게 안되는데 방법이 없일까 생각중입니다.
--------------------------------------
재미없는 일은 하지 말자는 인간 쓰레기.
-.-;
참고로,
macro를 사용하더라도 컴파일시 "-g3 -gdwarf-2" option을 사용하시면 gdb에서 macro로도 볼 수 있습니다.
예전에는 enum을 썼을때만 볼 수 있었던 거였지만, 이제는 debugger에서 symbolic name을 볼 수 있는게, enum만의 장점이라 할 수 없겠죠.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
저도 enum
저 또한 enum을 사용합니다.
사용하는 이유는 윗 분들과 동일하다고 할 수 있습니다.
가독성이 좋습니다. 헤더 파일을 열었을 때.. 딱 알 수 있지요..
하지만 defined 된 값이 일정하지 않으면 enum 보다는 const 나 define이 낫겠지요.
Always as first
Always as first
전 enum 을 사용하지
전 enum 을 사용하지 않습니다.
lxr 이 분석을 하지 못해서요.
http://lxr.linux.no/
OTL
댓글 달기