문제

의 의미는 무엇입니까 #line 에서 언어? 어디에서 사용됩니까?

도움이 되었습니까?

해결책

다음 줄이 실제로 어디에서 왔는지 컴파일러에게 알려줍니다. 예를 들어 파일을 포함시킬 때 다음과 같은 C 전 처리기 만 추가하여 컴파일러 (기본적으로 하나의 데이터 스트림 만 볼 수 있음)가 다른 파일을보고 있음을 알려줍니다.

이것은 이상하게 들릴지 모르지만 전처리 기는 단순히 포함을 지정하는 헤더 파일을 삽입하고 컴파일러는 전체에 대해 작동합니다 (소스 코드와 함께 연결된 모든 헤더 파일). GCC gcc -E myfile.c. 거기에서 당신은 그것이 추가 된 것을 알 수 있습니다 #line 파일을 포함 할 때마다 지시문과 컴파일러에 공급 된 텍스트 양을 줄일 때마다 (많은 양의 주석이 단일로 줄어들 수 있습니다. #line 지침, 앞서 건너 뛰기)

또한 Bison/YACC와 같은 다른 프로그램에서도 문제 (컴파일 문제가있는 경우)가 특정 라인에서 규칙 파일과 관련이 있음을 알려줍니다. 들소/YACC는 C- 파일을 생성합니다.

다른 팁

그것은라고합니다 사전 처리기 라인 제어 지침.

둘의 확장 __FILE__ 그리고 __LINE__ a #line 지침이 사용됩니다. 컴파일러가 다음 소스 라인의 줄 번호를 지정된 숫자로 볼 수 있습니다.

주요 용도는 컴파일러가보다 의미있는 오류 메시지를 제공하는 것입니다.

더 많은 설명과 사용 예제를 찾을 수 있습니다. IBM의 문서.

이것은 프라그마 예어:

"#선 컴파일러의 줄 번호를 수정하고 오류 및 경고에 대한 파일 이름 출력을 (선택적으로) 수정할 수 있습니다. 이 예는 줄 번호와 관련된 두 가지 경고를보고하는 방법을 보여줍니다. #Line 200 지시문은 라인 번호를 200으로 강제하고 (기본값은 #7이지만) 다음 #line 지시문까지 파일 이름은 "특별"로보고됩니다. #Line Default Directive는 라인 번호를 기본 번호 매기기로 반환하여 이전 지침에 의해 흡수 된 줄을 계산합니다. "

파일의 명백한 줄 번호를 변경할 수 있습니다.

내가 생각할 수있는 유일한 용도는 긴 일련의 멀티 라인 매크로 후 라인 번호를 제정신으로 만드는 것입니다.

사용법은 다음과 같습니다.

#line 42

C 파일 (헤더 또는 구현)이 생성 된 소스 파일의 파일 이름과 줄 번호를 제공하는 데 주로 사용됩니다. 이를 감안할 때, 컴파일러는 생성 된 파일이 아닌 소스 파일을 힌트하는 진단을 방출합니다.

사전 처리기는 또한이를 사용하여 확장 된 전처리 파일의 포함 된 헤더를 힌트합니다.

#은 프로세서 C 및 C ++의 상징이 상처를 입힌다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top