UFO ET IT

gcc 전 처리기 출력에서 ​​'# 1 "ac"'와 같이 해시 기호와 숫자로 시작하는 행의 의미는 무엇입니까?

ufoet 2020. 12. 7. 21:16
반응형

gcc 전 처리기 출력에서 ​​'# 1 "ac"'와 같이 해시 기호와 숫자로 시작하는 행의 의미는 무엇입니까?


다음을 사용하여 C 전 처리기의 출력을 인쇄합니다.

gcc -E a.c

출력에는 다음과 같은 많은 행이 포함됩니다.

# 1 "a.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "a.c"
# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 1 3
# 19 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 3
# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 1 3
# 31 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3

# 32 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3
# 20 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 2 3

나는 C에서 이런 종류의 구문을 본 적이 없습니다. 누군가 이것이 무엇을하는지 설명 할 수 있습니까?


이 줄은 디버깅을위한 힌트입니다 (줄 뒤의 코드가 실제로 가져온 위치).

# line-number "source-file" [flags]

플래그의 의미 (공백으로 구분) :

  • 1-새 파일 시작
  • 2-이전 파일로 돌아 가기
  • 3-다음 텍스트는 시스템 헤더 파일에서 가져옵니다 (#include <> 대 #include "").
  • 4-다음 텍스트는 암시 적 extern "C"블록으로 래핑 된 것으로 처리되어야합니다.

linemarkers은 에 언급 man gcc에 대한 -P옵션을 선택합니다.

-P옵션은 명확성을 위해 다음 줄을 제거하기위한 것입니다.

gcc -E -P source.c

자세한 문서를 참조하십시오 (이전에 답변 함).


이들은 라인 동기화 지시문으로, d 파일의 gcc오류에 대해 올바른 오류 메시지를 제공 할 수 #include있습니다. 다른 전 처리기 (예 : yacc/ bison)는 동일한 메커니즘을 사용하여 C 오류를 입력 .y파일 의 올바른 행에 연결 합니다.

참고 URL : https://stackoverflow.com/questions/5370539/what-is-the-meaning-of-lines-starting-with-a-hash-sign-and-number-like-1-ac

반응형