source

gcc 프리프로세서 출력에서 해시 기호와 #1 "a.c"와 같은 숫자로 시작하는 행의 의미는 무엇입니까?

gigabyte 2022. 8. 19. 20:56
반응형

gcc 프리프로세서 출력에서 해시 기호와 #1 "a.c"와 같은 숫자로 시작하는 행의 의미는 무엇입니까?

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 <> vs #include ").
  • 4 - 다음 텍스트는 암묵적인 외부 "C" 블록으로 감싸진 것으로 취급해야 합니다.

이들 라인마커는 에 기재되어 있습니다.man gcc위해서-P선택.

-Poption은 명확하게 하기 위해 다음 행을 삭제하는 것을 목적으로 합니다.

gcc -E -P source.c

상세한 메뉴얼(이전에 회답)을 참조해 주세요.

이것들은 회선 동기 지시입니다.이것에 의해gcc에러 메시지를 정정하다#included 파일기타 프리프로세서(예: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-a-c

반응형