source

C++ 단일 줄 주석 뒤에 다중 줄 주석의 \변환이 나옵니다.

ittop 2023. 7. 16. 17:55
반응형

C++ 단일 줄 주석 뒤에 다중 줄 주석의 \변환이 나옵니다.

에서 C++를 사용하여 ?//some comment\style 에 스일줄배 (끝치에타줄배)을 .\ 행으로 의견이 다중 행으로 변환됩니까?

g++ 4.8 및 VS 2012로 테스트됨

//some interesting stuff\
another interesting stuff\
etc

C++ 표준, 2.2 - 번역 단계.2단계는 다음을 포함합니다.

문자의 각 인스턴스(instance of backslash 문자의 각 (instance)\줄을 형성합니다 바로 뒤에 있는 줄 바꿈 문자가 삭제되어 물리적인 줄을 스플라이싱하여 논리적인 줄을 형성합니다.

3단계는 다음을 포함합니다.

각 주석은 공백 문자 하나로 대체됩니다.

따라서 줄 끝의 백슬래시는 주석 앞에 인식됩니다.

C에 대한 동등한 단계 2와 3은 C 표준(내 초안의 5.1.1.2 번역 단계)에서 찾을 수 있습니다.

A \그 다음에 새로운 행이 컴파일러가 주석과 주석의 끝을 찾기 시작하기 전에 번역 과정의 매우 초기에 제거됩니다. § 2.2, 번역 단계를 참조하십시오.

C인지 C++인지 알고 싶으십니까? (편집:원래 질문에서 OP가 C/C++을 요청했습니다.)

C의 경우 ISO/IEC 9899의 다음 섹션:TC2 위원회 초안 — 2005년 5월 6일 WG14/N1124가 귀하의 질문에 답합니다.

5.1.1.2 번역 단계

백슬래시 문자() 바로 뒤에 줄 바꿈 문자의 각 인스턴스가 삭제되어 물리적 소스 라인을 스플라이싱하여 논리적 소스 라인을 형성합니다.물리적 소스 라인의 마지막 백슬래시만 이러한 스플라이스의 일부가 될 수 있습니다.비어 있지 않은 원본 파일은 줄 바꿈 문자로 끝나야 하며, 이러한 스플라이싱이 발생하기 전에 백슬래시 문자가 바로 앞에 붙지 않아야 합니다.

C++의 경우 en.cppreference.com 에서 2단계를 참조할 수 있습니다.

줄의 끝에 백슬래시가 나타날 때마다(새 줄 문자 바로 뒤에 표시됨) 백슬래시와 새 줄이 모두 삭제되어 두 개의 물리적 소스 줄이 하나의 논리적 소스 줄로 결합됩니다.이것은 단일 패스 작업으로, 두 개의 백슬래시로 끝나는 라인과 빈 라인은 세 개의 라인을 하나로 결합하지 않습니다.이 단계에서 범용 문자 이름(\uXXX)이 형성되면 동작이 정의되지 않습니다.
에 비어 있지 않은 새 줄 ) 정의되지 경우++) 새 줄 이후). 종료 새 줄 문자가 추가됩니다(C++11 이후).

현재 행이 단일 행 주석인 경우, 다음 행은 주석으로 계속 소화됩니다.

http://www.cplusplus.com/forum/general/33653/

코드의 임의의 위치에 "\"를 추가할 수 있으며 새 줄은 무시됩니다.

표준의 2.2항을 더 잘 참조할 수 있습니다.

백슬래시 문자() 바로 뒤에 줄 바꿈 문자의 각 인스턴스가 삭제되어 물리적 소스 라인을 스플라이싱하여 논리적 소스 라인을 형성합니다.물리적 소스 라인의 마지막 백슬래시만 이러한 스플라이스의 일부가 될 수 있습니다.결과적으로 범용 문자 이름의 구문과 일치하는 문자 시퀀스가 생성되면 동작이 정의되지 않습니다.비어 있지 않고 줄 바꿈 문자로 끝나지 않거나 이러한 스플라이싱이 발생하기 전에 백슬래시 문자 바로 앞에 줄 바꿈 문자로 끝나는 원본 파일은 파일에 줄 바꿈 문자가 추가된 것처럼 처리되어야 합니다.

이는 파일의 마지막 문자가 백슬래시인 경우 발생하는 상황에 대해 명확하지 않습니다.이러한 경우, 새 라인을 추가한 결과는 라인 스플라이스가 아니라 백슬래시 전처리 토큰(단계 7에서 잘못된 토큰으로 진단됨)이어야 하지만, 이는 설명되어야 합니다.

작업 초안, 언어 C++ 프로그래밍 표준, 2장 어휘 규칙, 2.1 - 2):

새 줄 문자와 바로 앞에 있는 백슬래시 문자()와 새 줄 문자가 바로 이어지는 백슬래시 문자()의 각 인스턴스가 삭제되어 물리적 소스 라인을 스플라이싱하여 논리적 소스 라인을 형성합니다.물리적 소스 라인의 마지막 백슬래시만 이러한 스플라이스의 일부가 될 수 있습니다.

이는 주석에도 적용되며 여전히 최종 버전의 일부입니다.

그것은 C++ 언어의 모든 것처럼 C++ 표준에 있습니다.C++ 표준 초안은 무료로 다운로드할 수 있습니다(C++ 언어 설계에 참여한 사람과 컴파일러 작성자를 제외한 거의 모든 사람에게 초안은 충분합니다). 구글에서 "C++ 표준 초안"을 검색하면 됩니다.

언급URL : https://stackoverflow.com/questions/25157614/c-single-line-comments-followed-by-transforms-in-multiline-comment

반응형