C++에서 NULL
글쓴이: winner / 작성시간: 화, 2009/03/17 - 2:20오전
HanIRC의 langdev channel에서 NULL에 대한 이야기가 나와서 다시 공부를 좀 해봤습니다.
우선 C와 NULL은 C FAQs를 읽어보면 충분히 이해를 할 수 있습니다.
그런데 C++에서 추가적이 의문이 들더군요. C++는 NULL이 0 혹은 0L로 정의되는데 그 명확한 이유를 모르겠네요.
제가 쓰는 compiler에서는 0L로 정의를 해두었습니다. 그런데 만일 0이 다른 정수로 인식되는 것을 막기 위해서라면 0UL로 정의하는 것이 좋지 않았을까요? 이 경우도 unsigned long으로 인식되는 것은 피할 수 없습니다만 딱 이 경우만 문제를 회피할 수 없고 unsigned long 형은 잘 쓰이지 않으니까요(아마도...).
하지만 표준에서는 0혹은 0L로 정의된다는군요... 왜 그럴까요?
Forums:
ISO C 표준: The macros are
ISO C 표준:
ISO C++ 표준:
반드시 0 또는 0L이어야 한다는 말은 없습니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
그렇군요.
마지막 문장을 잘못해석했군요. ^_^
하지만 C++ 표준에 언급을 해서 제가 쓰는 compiler에서 0L로 정의해두었는지 모르겠네요...
C 표준을 보니 null pointer constant는 0인 정수상수수식이 변환되는 걸로 나왔으니 어떤 형태의 정수상수수식이 나와도 되겠군요.
원래 정수 0으로
원래 정수 0으로 평가될 수 있는 값이어야 하고 0L은 적법합니다.
댓글 달기