있을 지 없을 지 모르는 상수를 #if에 쓰기

오늘 커밋 로그를 보다가 멋진 트릭을 하나 발견!

C의 #if에서 정의 됐을지 안 됐을지 모르는 상수를 계산식에 써버리면 치명적인 에러가 보통 발생합니다. 예를 들면

이 코드를 컴파일할 때 미리 NUM_OF_GIRLFRIENDS 가 아예 정의되어 있지 않다면, (아마도 전혀 기억이 없는 사람.. ~먼산~)

이렇게 돼서 > 연산자의 왼쪽이 없어서 에러가 나는데, 보통 사람의 해결방법은 #ifdef를 위에 쓰는 것이겠지만.. 오늘 파이썬 커밋 로그에서 모 플랫폼 (사실은 FreeBSD 4 -.-;)에서 _POSIX_SEMAPHORES 가 정의되지 않아서 생기는 문제점을 Martin이 고친 것을 봤는데 이렇게 고쳐놨습니다.

_POSIX_SEMAPHORES가 정의되어 있지 않더라도 +0 == -1이 돼서.. 결국은 제대로 전처리가 되는 것!! +_+

5 thoughts on “있을 지 없을 지 모르는 상수를 #if에 쓰기”

Comments are closed.