Comments
주석은 일종의 코드 내 문서화 역할을 합니다. 프로그램에 삽입되면 컴파일러에 의해 효과적으로 무시됩니다; 주석은 소스 코드를 읽는 사람들을 위한 메모로만 사용되도록 의도되었습니다.
목차 |
구문
/*
주석
*/
|
(1) | ||||||||
//
주석
|
(2) | (C99부터) | |||||||
모든 주석은 프로그램에서 번역 단계 3 에서 각 주석을 단일 공백 문자로 대체하여 제거됩니다.
C 스타일
C 스타일 주석은 일반적으로 대량의 텍스트 블록이나 작은 코드 조각을 주석 처리하는 데 사용됩니다. 그러나 단일 라인을 주석 처리하는 데에도 사용할 수 있습니다. 텍스트를 C 스타일 주석으로 삽입하려면 해당 텍스트를
/*
와
*/
로 감싸면 됩니다. C 스타일 주석은 컴파일러에게
/*
와
*/
사이의 모든 내용을 무시하도록 지시합니다. 비록 C 표준의 일부는 아니지만,
/**
와
**/
는 종종 문서화 블록을 나타내는 데 사용됩니다. 두 번째 별표가 단순히 주석의 일부로 처리되기 때문에 이것은 문법적으로 유효합니다.
문자 상수
,
문자열 리터럴
, 또는 주석 내부를 제외하고,
/*
문자는 주석을 시작합니다. 이러한 주석의 내용은 멀티바이트 문자를 식별하고 주석을 종료하는
*/
문자를 찾기 위해서만 검사됩니다. C 스타일 주석은 중첩될 수 없습니다.
C++-style
C++-style 주석은 일반적으로 한 줄의 텍스트나 코드를 주석 처리하는 데 사용됩니다. 그러나 여러 개를 함께 배치하여 여러 줄 주석을 형성할 수도 있습니다. 텍스트를 C++-style 주석으로 삽입하려면 텍스트 앞에
문자 상수
,
문자열 리터럴
, 또는 주석 내부를 제외하고,
// y = f(x); // invoke algorithm
C-style 주석은 C++-style 주석 내에 나타날 수 있습니다: // y = f(x); /* invoke algorithm */
C++-style 주석은 C-style 주석 내에 나타날 수 있습니다. 이는 소스 코드의 작은 블록을 제외하는 메커니즘입니다: /*
y = f(x); // invoke algorithms
z = g(x);
*/
|
(C99부터) |
참고 사항
주석은 전처리기 단계 이전에 제거되기 때문에 매크로를 사용하여 주석을 형성할 수 없으며, 종료되지 않은 C-스타일 주석은 #include된 파일에서 확장되지 않습니다.
/* 매크로를 사용하여 주석을 형성하려는 시도 */ /* 하지만 공백이 "//" 문자를 대체합니다 */ #ifndef DEBUG #define PRINTF // #else #define PRINTF printf #endif ... PRINTF("Error in file %s at line %i\n", __FILE__, __LINE__);
주석 처리 외에, 소스 코드 제외에 사용되는 다른 메커니즘은 다음과 같습니다:
#if 0 puts("이 코드는 컴파일되지 않습니다"); /* C 스타일 주석과 충돌하지 않음 */ // C++ 스타일 주석과 충돌하지 않음 #endif
그리고
if(0) { puts("이 코드는 컴파일되지만 실행되지 않습니다"); /* C 스타일 주석과 충돌하지 않음 */ // C++ 스타일 주석과 충돌하지 않음 }
C99에서 // 주석의 도입은 일부 드문 상황에서 호환성을 깨는 변경이었습니다:
a = b //*divisor:*/ c + d; /* C89 컴파일: a = b / c + d; C99 컴파일: a = b + d; */
예제
#include <stdio.h> /* C-style comments can contain multiple lines. */ /* Or, just one line. */ // C++-style comments can comment one line. // Or, they can // be strung together. int main(void) { // The below code won't be run // puts("Hello"); // The below code will be run puts("World"); // A note regarding backslash + newline. // Despite belonging to translation phase 2 (vs phase 3 for comments), // '\' still determines which portion of the source code is considered // as 'comments': // This comment will be promoted to the next line \ puts("Won't be run"); // may issue a warning "multi-line comment" puts("Hello, again"); }
출력:
World Hello, again
참고문헌
- C17 표준 (ISO/IEC 9899:2018):
-
- 6.4.9 주석 (p: 54)
- C11 표준 (ISO/IEC 9899:2011):
-
- 6.4.9 주석 (p: 75)
- C99 표준 (ISO/IEC 9899:1999):
-
- 6.4.9 주석 (p: 66)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 3.1.9 주석
참고 항목
|
C++ 문서
에서
Comments
참조
|