C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[70581] Re:Re:Re:Re:헤더에 선언된 define된 숫자를 사용하는 질문입니다
지난이 [] 13556 읽음    2013-12-27 09:07
질문하신 분의 핵심은 이것입니다.
런타임에 외부의 텍스트파일을 읽어서 그안에 적혀있는 NUMBER1, NUMBER2를 #define에 의하여 값을 변경할 수 있는가?

답은 :  "절대 불가능합니다"

#define이나 #include같은 프리프로세서는 이름그대로 컴파일단계이전에만 동작합니다.
컴파일할때 프리프로세서는 살라님의 소스 어디에서도 NUMBER1, NUMBER2를 볼수 없습니다.
그런 도구를 가지고 런타임에서 외부로부터 읽어들인 파일에 적혀있는 NUMBER1, NUMBER2를 바꾸는 것은 불가능합니다.

런타임에 이루어지는 모든 동작은 살라님 스스로 코딩하셔야합니다.

외부파일에서 한단어씩 읽으셔서 그것이 NUMBER1, NUMBER2가 아닌지 일일이 비교하셔서 일치한다면
0x00003000  0x00003010로 바꾸어넣는 코드를 스스로 적으셔야합니다.



라스코니 님이 쓰신 글 :
: 질문을 보니 프리프로세서를 만드는 게 목적이신가 보군요.
:
: 우선 #define 형태만 처리하는 것을 한다면
: 헤더 파일에
: #define NUMBER1 0x00003000
: #define NUMBER2 0x00003010
: 로 되어 있을때  " "(공백)으로 한줄씩 읽어 NUMBER1과 그와 같이 "0x00003000" 을 어딘가에 저장하면 됩니다.
:
: 그후 #include "위 헤더파일" 밑의 코드에서
: NUMBER1을 찾아 "0x00003000" 으로 바꿔친 후 컴파일하면 됩니다.
:
:
: 살라 님이 쓰신 글 :
: : 앗.. 저 코드는 제가 예시로 써놓은 것이라서 오타가 있었네요 ^^;
: :
: : 제가 궁금한것은 제가 읽은 text 파일에서 제가 읽은 문자 "NUMBER1"에 대해서(String이나 Char이겠죠?ㅎ) 헤더파일의 #define문과의 연동..? 이 궁금한것인데 해결되지가 않네요..ㅜㅜ
: :
: :
: : 김종기 님이 쓰신 글 :
: : : 당연히 가능한것인데
: : : 본문중 unsigned int a = NUMBER1 + NUMBER2; 와 같은 식으로해서 0x00006010이 나오도록 하고싶은데..
: : : 에서 NUMBER1 + NUMBER2; ";"를 ":"로 잘못 사용하였군요.
: : :
: : : 살라 님이 쓰신 글 :
: : : : 안녕하세요. 크리스마스에도 일 하는 처자..ㅠㅠ
: : : :
: : : : XE5 버전을 사용하고 있습니다.
: : : :
: : : : 저는 헤더파일에
: : : : #define NUMBER1 0x00003000
: : : : #define NUMBER2 0x00003010
: : : : ....
: : : :
: : : : 이런 형식의 16진법 숫자에 대한 선언한 파일을 읽습니다.
: : : :
: : : : 메인에서 NUMBER1과 NUMBER2라는 글씨가 저장되어있는 텍스를 읽어서 header에서 define된 값을 사용하려합니다.
: : : :
: : : : unsigned int a = NUMBER1 + NUMBER2; 와 같은 식으로해서 0x00006010이 나오도록 하고싶은데..
: : : :
: : : : 텍스트를 읽어 단어를 찾아서 String 으로 두 단어를 받았더니 당연하게 에러가 뜨구요
: : : :
: : : : unsigned int로 받아봐도 숫자가 아니라 에러가 되고..
: : : :
: : : : unsigned char..AnsiString..StrToInt도 아니되고 ㅠ.ㅠ..
: : : :
: : : : 제 짧은 지식으로 아는 변수타입은 다 써봤는데 해결법을 찾지 못하였습니다. ㅜㅜ
: : : :
: : : : 잘 아시는 고수님들의 조언 부탁드립니다.

+ -

관련 글 리스트
70572 헤더에 선언된 define된 숫자를 사용하는 질문입니다 살라 6643 2013/12/25
70579     Re:헤더에 선언된 define된 숫자를 사용하는 질문입니다 박지훈.임프 11928 2013/12/26
70573     Re:헤더에 선언된 define된 숫자를 사용하는 질문입니다 김종기 6298 2013/12/26
70575         Re:Re:헤더에 선언된 define된 숫자를 사용하는 질문입니다 살라 16120 2013/12/26
70580             Re:Re:Re:헤더에 선언된 define된 숫자를 사용하는 질문입니다 라스코니 15338 2013/12/27
70584                 Re:Re:Re:Re:헤더에 선언된 define된 숫자를 사용하는 질문입니다 감사합니다 ^^ 살라 12015 2013/12/27
70581                 Re:Re:Re:Re:헤더에 선언된 define된 숫자를 사용하는 질문입니다 지난이 13556 2013/12/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.