현재 오픈소스를 이용해서 작업중에 있는데 코드 내에
#line 숫자 "파일명"
이런식으로 나와 있는 부분들이 있는데요
혹시 아시는 분 있나요? ^^;
컴파일 시에 선언한 라인을 선언이 되어 있는 곳으로 mapping시킨다는 식으론 알고 있는데
당최 의도를 정확히 모르겠네요..
많은 답변들 부탁 드립니다.ㅎ..
#line 전처리문은 __LINE__, __FILE__ 매크로를 재정의한다. 줄 수는 정수로 주고 파일명은 문자열 형태로 지정하되 파일명을 생략할 경우 기존의 파일명이 그대로 유지된다. #line 123 "a.cpp" 명령은 현재 줄을 123으로 바꾸고 파일명을 a.cpp로 변경한다. 이 전처리문은 사용자가 직접 사용하는 경우가 드물며 주로 컴파일러가 에러 메시지 조립을 위해 내부적으로 사용한다.
여기를 한번 보세요
http://winapi.co.kr/clec/cpp2/18-2-5.htm
http://winapi.co.kr/clec/cpp2/18-2-6.htm
위 두 링크를 보시면 도움이 되실거 같네요
#line 전처리문은 __LINE__, __FILE__ 매크로를 재정의한다. 줄 수는 정수로 주고 파일명은 문자열 형태로 지정하되 파일명을 생략할 경우 기존의 파일명이 그대로 유지된다. #line 123 "a.cpp" 명령은 현재 줄을 123으로 바꾸고 파일명을 a.cpp로 변경한다. 이 전처리문은 사용자가 직접 사용하는 경우가 드물며 주로 컴파일러가 에러 메시지 조립을 위해 내부적으로 사용한다.
실제로 사용해 본 경험이 있습니다.
아두이노를 커맨드라인에서 빌드하기 위한 프로젝트 arscons;
http://code.google.com/p/arscons/
에서 이 매크로를 사용하고 있습니다.
cf. 아두이노는 8bit 마이컴 보드와 IDE, 프로그래밍 언어를 말합니다.
아두이노 언어로 짠 소스(예, my_sketch.pde)는 사실 cpp 소스의 조각으로,
IDE에서 컴파일 과정에서 사용자가 작성한 pde에 skel.cpp 를 덛붙여 my_sketch.cpp 로 변환하여 컴파일 하게 됩니다.
컴파일 오류는 my_sketch.cpp에서 발생하지만m 프로그래머에게 알려줘야 할 파일이름과 라인은 my_sketch.pde의 것이여야 함으로,
변환된 my_sketch.cpp에서 my_sketch.pde의 내용이 시작하는 부분에;
#line 1 "my_sketch.pde"
가 추가되어 들어갑니다.
application 개발자가
application 개발자가 source를 작성하면서, #line을 쓸 이유는 거의 없습니다.
보통 lex/yacc, bison, flex 등, C/C++ source를 만들어 내는 툴을 개발할 때에 주로 사용합니다.
--
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/
kj
kj
댓글 달기