반응형
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
파일 의 올바른 행에 연결 합니다.
반응형
'UFO ET IT' 카테고리의 다른 글
Qt에 C 인터페이스가 있습니까? (0) | 2020.12.07 |
---|---|
현재 실행중인 Solr의 버전을 어떻게 알 수 있습니까? (0) | 2020.12.07 |
Linux에서“./configure”에 대한 다양한 옵션 / 인수는 무엇입니까? (0) | 2020.12.07 |
MongoDB stats () 함수는 비트 또는 바이트를 반환합니까? (0) | 2020.12.06 |
JOptionPane.showInputDialog의 다중 입력 (0) | 2020.12.06 |