2012-06-22 1 views
0

컴파일 할 때 -E 플래그를 사용하면 사전 처리 된 출력이 표시됩니다.icpc (또는 gcc 같아 보입니다)의 사전 처리 된 출력에서 ​​포함 경로/숫자는 무엇을 의미합니까?

이 출력 라인의 일부는 다음과 같습니다 -

# 4 "../Framework.h" 2 
# 1 "../Basic.h" 1 
# 1 "/usr/include/c++/4.1.2/queue" 1 3 

것은 무엇을 의미 하는가? 더 많은 정보를 얻을 수있는 소스가 있습니까?

+0

gcc 전 처리기 출력에서 ​​'# 1 "ac"'와 같은 해시 기호 및 숫자로 시작하는 줄의 의미는 무엇입니까?] (http://stackoverflow.com/questions/5370539/what- 해시 기호와 숫자로 된 1-ac와 같은 의미의 라인을 의미합니다. – jww

답변

0

처리 된 코드에 대한 정보 (컴파일러가 디버그 정보를 생성 한 경우 디버거)입니다. 필자는 정확한 구문을 모르지만 포함 경로, include 파일의 '#include'지시문 위치 및 포함 된 파일의 전처리 프로그램에서 제거하지 않은 다음 줄의 위치를 ​​알려줍니다. 이 정보를 사용하여 (주석이없는 행을 계산하면) 컴파일러는 올바른 행과 포함 방법을 알려주는 진단을 제공 할 수 있습니다.

+0

글쎄요, 나는 막연하게 그걸 알아 냈습니다. 불행히도, 내 컴파일러는 순서가 잘못된 헤더를 포함하고있는 것 같아서 왜 (분명히 내 코드의 버그입니다) 알아 내고 싶습니다. 정확한 구문 (더 일반적인 대답이없는 경우 icpc12에 대한보다 정확한 답변)을 부탁드립니다. – owagh

+0

@wowagh : 모든 헤더에는 각각의 종속성이 포함되어야하며 이는 포함 순서가 무의미하다는 것을 의미합니다. 네, 코드에 문제가 있습니다. 컴파일러 오류를보고 수정해야합니다. 종속성 (식별자가 인식되지 않음)을 알 때마다 include 지시문을 해당 파일에 추가하고, 다시 컴파일하고, 오류 ... –

+0

버그가 수정되었습니다. 하지만 질문은 여전히 ​​흥미 롭습니다. – owagh

관련 문제