주석은 무엇을 위한 것인가
주석은 C++ 컴파일러가 완전히 무시하는, 소스 코드 안의 텍스트입니다. 컴파일된 프로그램에는 결코 포함되지 않으며, 오직 코드를 읽는 사람을 위해서만 존재합니다. 주석은 어떤 것이 왜 특정 방식으로 작성되었는지 설명하거나, 메모를 남기거나, 코드를 삭제하지 않고 일시적으로 비활성화하는 데 사용합니다.
여러분이 이미 알고 있는 C++ 문법을 바탕으로 보면, 주석은 거의 어디에나 넣을 수 있고 컴파일러가 그냥 건너뛰는 몇 안 되는 것 중 하나입니다. C++에는 두 종류가 있습니다. 한 줄 주석(//)과 여러 줄 블록 주석(/* */)입니다.
한 줄 주석
두 개의 슬래시(//)는 현재 줄의 끝까지 이어지는 주석을 시작합니다. 컴파일러는 //부터 줄바꿈까지의 모든 것을 건너뜁니다.
두 번째 주석이 실제 코드와 같은 줄을 공유하고 있다는 점에 주목하세요. // 앞에 있는 것은 여전히 실행되고, 그 뒤의 부분만 무시됩니다. 이것이 짧은 메모에 가장 흔히 쓰이는 주석 스타일입니다.
여러 줄 블록 주석
메모가 여러 줄에 걸칠 때는, 각 줄 앞에 //를 붙이는 것보다 블록 주석이 더 깔끔합니다. 블록 주석은 /*로 시작해 */로 끝납니다. 그 둘 사이에 있는 것은 - 몇 줄이든 상관없이 - 모두 무시됩니다.
앞쪽 가장자리를 따라 정렬된 * 문자들은 스타일 관례일 뿐 규칙이 아닙니다. 실제로 의미가 있는 부분은 여는 /*와 닫는 */뿐입니다. 블록 주석은 줄 중간에 들어갈 수도 있습니다 - int x = 5 /* width */ + 2;는 유효합니다 - 다만 그렇게 하면 금세 읽기 어려워집니다.
코드 주석 처리하기
주석은 실험하는 동안 코드를 삭제하지 않고 비활성화하는 표준적인 방법입니다. 한 줄에는 //를, 여러 줄을 한꺼번에 끄려면 블록 주석을 사용하세요.
실행해 보면 두 개의 "runs" 줄만 출력되는 것을 볼 수 있습니다. 주석 처리된 cout 문은 컴파일러에게 보이지 않습니다.
중첩 불가라는 함정
초보자가 걸려드는 함정: 블록 주석은 중첩되지 않습니다. 앞에 /*가 몇 개 있든 첫 번째 */가 주석을 닫습니다. 따라서 /* ... */ 블록을 다른 /* ... */ 블록 안에 감쌀 수 없습니다 - 안쪽의 */가 전체를 끝내 버리고, 그 뒤에 오는 것은 다시 코드(보통 문법 오류)가 됩니다.
/* Trying to disable a region that already has a block comment...
int n = 10; /* the width */
cout << n;
*/ // the first */ above already closed the comment - this line is now stray code
바깥쪽 주석은 the width 뒤의 */에서 끝나므로, 나머지는 더 이상 주석 처리되지 않고 컴파일러는 끝에 남은 */에서 막힙니다. 이미 블록 주석을 포함한 영역을 비활성화해야 할 때는 대신 각 줄에 //를 사용하세요. 대부분의 편집기는 단축키 하나로 선택 영역 전체의 줄 주석을 토글할 수 있어, 이 문제를 완전히 피할 수 있습니다.
좋은 주석 대 잡음
주석은 코드가 스스로 말할 수 없는 것을 설명해야 합니다. 단지 코드를 그대로 되풀이하는 주석은 어수선함만 더하고, 코드가 바뀌면서 낡아 버리기 쉽습니다.
// Bad: just repeats what the code obviously does
i = i + 1; // add one to i
// Better: explains the reason, which the code can't show
retries++; // back off and retry; the API is rate-limited at 5 req/sec
명확한 이름과 구조를 통해 코드 자체를 읽기 쉽게 만드는 것을 목표로 하고, 주석은 왜를 위해 아껴 두세요 - 의도, 절충, 예외 상황, 그리고 맥락에 대한 링크입니다. 헷갈리는 한 줄을 설명하려고 주석을 쓰고 있는 자신을 발견한다면, 그것은 변수 이름을 바꾸거나 로직을 잘 이름 붙인 함수로 나누라는 신호인 경우가 많습니다.
다음: 변수
이제 코드에 설명을 달 수 있게 되었으니, 다음 구성 요소는 코드 안에 데이터를 저장하는 것입니다. 다음 페이지에서는 변수를 다룹니다 - 변수를 선언하는 방법, 변수가 담는 기본 자료형, 그리고 C++가 정적 타입 언어이기 때문에 강제하는 규칙들입니다.
자주 묻는 질문
C++에서 주석은 어떻게 작성하나요?
한 줄 주석에는 //를 사용합니다. 해당 줄에서 // 뒤에 오는 모든 내용은 컴파일러가 무시합니다. 여러 줄에 걸친 주석은 텍스트를 /*와 */로 감쌉니다. 예를 들어 // 이것은 메모입니다 또는 /* 이것은 여러 줄에 걸쳐 있습니다 */처럼 작성합니다.
C++에서 //와 /* */의 차이는 무엇인가요?
//는 한 줄의 나머지를 주석 처리하므로 각 줄마다 하나씩 필요합니다. /* */는 블록 주석으로, /*에서 시작해 여러 줄에 걸쳐 있더라도 다음 */까지 이어집니다. 짧은 인라인 메모에는 //를, 텍스트나 코드 덩어리를 한 번에 비활성화할 때는 /* */를 사용하세요.
C++에서 주석을 중첩할 수 있나요?
아니요. 블록 주석(/* */)은 중첩되지 않습니다. 앞에 /*가 몇 개 있든 첫 번째 */가 주석을 닫습니다. 이미 블록 주석을 포함한 영역을 비활성화하려면 대신 각 줄에 //를 붙이세요(대부분의 편집기는 단축키 하나로 이 작업을 처리합니다).