#define define_msg 은 define_msg를 정의한다고 전처리기에게 알리는 것이다.
#ifndef define_msg 은 전처리기에게 define_msg가 정의안되어 있다면, #endif 까지 "코드 인스턴스화" 하라는 뜻이다.
#endif 는 #if??? 에서 여기까지 끝난 다는 뜻이다.
#ifndef define_msg 은 전처리기에게 define_msg가 정의안되어 있다면, #endif 까지 "코드 인스턴스화" 하라는 뜻이다.
#endif 는 #if??? 에서 여기까지 끝난 다는 뜻이다.
#ifndef 와 #endif 는, 코드를 인스턴스화 할지 안할지를 결정하는데 많이 쓰이는데, 어제 이것 때문에 고생 꽤나 했었다. 다른곳에서 define 정의되어 있는지도 모르고, 다른 곳에서 버그를 고치려 했으니, "종로에서 뺨맞고 한강가서 화풀이 한다."를 한 꼴이다.
이 문제를 해결하기 위해서, 예전에 공부했다가, 어떤 사람이 했던 한가지 대안이 떠올랐다.
바로 파일 이름명을 이용하여, #define 을 해 두는것인데, __filename_h__ 으로 정의하고, 만약 파일이 같은게 있다면, 네임스페이스나 클래스의 이름을 끼어 넣어 보완하는 것이다.
..
만약 odbc.h 파일이 있고, loost namespace 가 있는 곳이라면, #define __loost_odbc_h__ 으로 정의해 두는 것이다.
앞과 뒤에 __ 가 되어 있는데, 이것은 컴파일러가 쓰지 않는 것이니 괜찮다고 한다.
.. .. 두서 없이 정리해봤다.
요지는, 제목 그대로 조심해야 한다는 뜻, 대안은 스스로 찾아야 한다.
'연구실 > 파편화된 기록들' 카테고리의 다른 글
오늘의 코딩 명언 (1) | 2009.02.06 |
---|---|
코딩용 글꼴로 무엇을 사용 하십니까? (0) | 2009.02.04 |
오늘의 코딩 명언 (0) | 2009.02.04 |
빅 오( Big O ) 표기법이란 무엇일까? (5) | 2009.01.13 |
printf 의 가변인자 유도 변수가 생각이 나지 않는 경우에 참조해야 할 문서. (0) | 2009.01.05 |
MSVC 1개의 솔루션에 다중 프로젝트에 걸렸던 lib 링크 에러 문제 (0) | 2008.12.11 |
WSARecv 리턴시, 10014 에러 코드 반환 할 경우.. (0) | 2008.11.09 |
thread alertable state and APC (0) | 2008.10.25 |
어떻게 하면 쓰레드를 객체로 만들 수 있을 까? (0) | 2008.10.23 |
윈도우 도움말 글꼴 크기가 너무 작게 보일 경우 (0) | 2008.10.20 |
최근댓글