[B키보드] 프로그래밍 도사님 계시면 한수 가르침 부탁합니다.

http://kldp.org/node/105023

여기에 올렸던 글인데 뾰족한 답변이 아직 없어서.. ^^;;

현 프로젝트에서 변수를 선언하는 매크로를 사용하고 있습니다. 이 매크로는 동일 브레이스내에서는 한 번만 쓸 수 있겠지요... 두번 이상 쓰면 변수명이 중복될 테니까요. 그런데 문제는 두번 이상 사용해야 할 일이 있다는 겁니다. 변수의 소멸자를 이용한 작업이라서 브레이스를 따로 열어서 해결할 수도 없는 문제입니다. 매크로를 사용할 때마다 생성되는 변수병이 달라져야 한다는 것이지요. 

요약하면 Visual Studio에서 컴파일 옵션 변경 없이 컴파일타임에 결정되는 랜덤 변수명을 생성할 수 있느냐 하는 질문입니다. 그걸 어디다 써? 하고 물으시면 글이 길어지니 그 부분은 말고, 이 부분에 대해 가능한 방법이 혹시 있을지 궁금합니다. 

현재는 임시방편으로 비슷한 매크로를 여러개 정의해두었습니다. 누가 봐도 무식한 방법이라... 좀더 Graceful하게 해결하고 싶어요. 

이전 댓글 4
nickx 2009-05-06 18:44
의도하시는 부분이 무언지 이해가 잘 안가긴하지만.. 일단 스택상에 저런 짓을 하는 것은 가능한지 모르겠습니다. 좀 더 로우레벨까지 들어간다면 방법이 있을 수도 있지 않을까 싶지만.. c나 c++ 언어상에서 원하시는 것이 심플하게 해결될만한 해결책은 생각나는게 없네요.. 이런 건 어떠실지.. 전역이나 메인블럭에서 map 이든 vector 든 컨테이너 사용 예상되는 타입 갯수만큼 들고 있고... template 으로 인자 타입을 받으면 그에 맞는 변수를 힙에 alloc 시킨다음 그 포인터를 리턴시켜서 컨테이너에 들고있게하는거지요.. 프로그램 종료시점에서 컨테이너 안의 변수, 객체들에 대해서 release 시켜야겠구요..  
고로다 2009-05-07 03:00
저두 질문자분께 원하시는 답변인지는 모르겠지만, 포인터형으로 잡구 같은 공간의 주소를 기억하는 방법은 어떠실런지요?? 제가보기엔 핸들러 이벤트 함수 또는 스레드에 따른 세마포어 적인 활용을 위해서 그렇게 쓰시는거 같습니다만..
WARC온리유 2009-05-07 11:14
답변 감사합니다.다만.. 
KHAN 2009-05-07 19:40
해당 매크로 코드를 { } 로 감싸세요. 매크로 코드 내에서만 유효한 변수로 선언됩니다.
← 질문답변 목록으로