수색…


소개

주석은 코드를 읽는 사람에게 무엇인가를 나타 내기 위해 사용됩니다. 주석은 컴파일러가 공백으로 처리하며 코드의 실제 의미에서 어떤 것도 변경하지 않습니다. C의 주석에는 원래 /* */ 와 약간 더 새로운 // 구문이 사용됩니다. 일부 문서 시스템은 특수하게 형식화 된 주석을 사용하여 코드에 대한 문서를 작성하는 데 도움을줍니다.

통사론

  • /*...*/
  • //... (C99 이상 만)

/ * * / 구분 된 주석

주석은 슬래시 별표 (바로 다음에 시작 /* ), 마자 즉시 슬래시 (뒤에 끝나는 별표 */ )가 발생된다. 이 문자 조합 사이의 모든 것은 주석이며 컴파일러에 의해 공백 (기본적으로 무시 됨)으로 처리됩니다.

/* this is a comment */

위의 주석은 한 줄 주석입니다. 이 /* 유형의 주석은 다음과 같이 여러 줄에 걸쳐있을 수 있습니다.

/* this is a
multi-line
comment */

꼭 필요한 것은 아니지만 여러 줄로 된 주석을 사용하는 공통된 스타일 규칙은 첫 번째 줄에 이어지는 공백과 별표를 넣고 새 줄에 /**/ 를 붙여 모든 줄을 정렬하는 것입니다.

/* 
 * this is a
 * multi-line
 * comment
 */

추가 별표는 관련된 슬래시가 없으므로 주석에 기능적 영향을 미치지 않습니다.

주석의 이러한 /* 유형은 코드 라인의 끝이나 코드 라인 내에서, 자신의 라인에서 사용할 수 있습니다 :

/* this comment is on its own line */
if (x && y) { /*this comment is at the end of a line */
    if ((complexCondition1) /* this comment is within a line of code */
            && (complexCondition2)) {
        /* this comment is within an if, on its own line */
    }
}

주석은 중첩 될 수 없습니다. 이는 후속 /* 가 (주석의 일부로) 무시되고 첫 번째 */ 도달은 주석을 끝내는 것으로 처리되기 때문입니다. 다음 예제의 주석은 작동하지 않습니다 .

/* outer comment, means this is ignored => /* attempted inner comment */ <= ends the comment, not this one => */

아래에 있는 전 처리기사용하여 주석 달기 예제 참조하십시오.이 유형의 주석을 포함하는 코드 블록은 주석으로 처리 합니다.

// 구분 된 주석

C99

C99에서는 C ++ 스타일의 단일 행 주석을 사용했습니다. 이 주석 유형은 두 개의 슬래시로 시작하여 줄 끝까지 실행됩니다.

// this is a comment

이 유형의 주석은 여러 줄 주석을 허용하지 않지만 여러 줄 주석을 차례로 추가하여 주석 블록을 만들 수 있습니다.

// each of these lines are a single-line comment
// note how each must start with
// the double forward-slash

이 유형의 주석은 자체 행이나 코드 행의 끝에 사용될 수 있습니다. 그러나 줄 끝까지 실행되기 때문에 코드 줄 내에서 사용할 수 없습니다

// this comment is on its own line
if (x && y) { // this comment is at the end of a line
    // this comment is within an if, on its own line
}

선처리를 사용하여 주석 달기

코드의 큰 덩어리는 전 처리기 지시문 #if 0#endif 사용하여 "주석 처리"할 수도 있습니다. 이 코드는 코드에 여러 줄 주석이 포함되어있는 경우 유용하며 다른 경우에는 중첩되지 않습니다.

#if 0 /* Starts the "comment", anything from here on is removed by preprocessor */ 

/* A large amount of code with multi-line comments */  
int foo()
{
    /* lots of code */
    ...

    /* ... some comment describing the if statement ... */
    if (someTest) {
        /* some more comments */
        return 1;
    }

    return 0;
}

#endif /* 0 */

/* code from here on is "uncommented" (included in compiled executable) */
... 

트라이 그래프로 인해 발생할 수있는 함정

C99

쓰는 동안 // 구분 의견을, 그들의 예상 작동에 영향을 인쇄 상 오류를 만드는 것이 가능하다. 하나의 유형 :

int x = 20;  // Why did I do this??/

끝에 / 는 오타 였지만 지금은 \ 로 해석 될 것입니다. 이것은 ??/삼부를 형성하기 때문입니다.

??/ trigraph는 실제로 줄 연속 기호 인 \ 에 대한 긴 표기법입니다. 즉, 컴파일러는 다음 줄이 현재 줄의 연속이라고 생각합니다. 즉, 의도 한 내용이 아닌 주석의 연속입니다.

int foo = 20; // Start at 20 ??/
int bar = 0;

// The following will cause a compilation error (undeclared variable 'bar')
// because 'int bar = 0;' is part of the comment on the preceding line
bar += foo;


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow