주석 개요

주석을 사용하면 함수에서 동작을 명시적으로 지정할 수 있습니다. 개발자는 소스 코드에 함수 주석을 포함하여 구현(호출 수신자)과 클라이언트(호출자) 사이의 계약을 명시적으로 지정할 수 있습니다. 코드 분석 도구는 호출자와 호출 수신자 사이의 계약 위반을 검색하기 위해 함수가 호출되기 전/후에 반환 형식 및 함수 매개 변수의 조건에 대한 추가 정보를 사용합니다. 함수 선언에 주석을 지정할 경우 함수 정의에는 주석을 지정할 필요가 없습니다.

특성

주석 체계는 VC++ 컴파일러 특성으로 구현됩니다. 다음 두 특성은 주석의 기반을 제공합니다.

Pre

Pre 특성의 각 인스턴스는 주석이 지정된 매개 변수의 속성 집합을 지정합니다. 다음 주석은 Valid 속성에 Pre 특성을 사용합니다.

void f ( [ Pre (Valid = Yes) ] int pWidth);

pWidth 매개 변수에 주석을 지정하여 함수에서 호출자가 올바른 정수 값을 전달하도록 요구합니다. 정수 계열 값 또는 부동 소수점 값의 경우에는 매개 변수가 초기화되었으며 가비지 데이터를 포함하지 않는다는 의미입니다.

Post

Post 특성의 각 인스턴스는 주석이 지정된 매개 변수나 반환 값의 속성 집합을 지정합니다. 다음 주석은 MustCheck 속성에 Post 특성을 사용합니다.

[returnvalue:Post(MustCheck=Yes)] bool f();

함수의 반환 값에 주석을 지정하여 함수의 반환 값을 검사하도록 호출자에게 요구하므로 다음과 같은 호출은 C6031을 생성합니다.

void main( )
{
  // code
  f ( ); // warning 6031
  // code 
}

Pre 및 Post 특성 외에도 다음 두 특성을 사용할 수 있습니다.

  • FormatString 특성은 형식 정보를 지정하기 위해 제공되며 Style 속성과 함께 사용됩니다.

  • InvalidCheck 특성은 함수의 반환 값이 올바른지 아니면 잘못되었는지를 확인하기 위해 제공되며 Value 속성과 함께 사용됩니다.

속성

Pre 및 Post 특성과 함께 지정할 수 있는 여러 가지 속성이 있습니다. 대부분의 속성은 Pre 특성과 Post 특성에 모두 사용할 수 있지만 MustCheck 속성은 함수의 반환 값에만 적용할 수 있으며 Post 특성을 사용하여 지정해야 합니다. 특정 속성을 사용하기 전에 설명서를 잘 읽고 지원되는 특성과 데이터 형식을 확인해야 합니다. 자세한 내용은 주석 속성을 참조하십시오.

C에서 주석 사용

C 소스 파일에 주석을 사용하려면 다음 파일을 포함합니다.

#include <CodeAnalysis/SourceAnnotations.h>

다음 코드와 같이 함수에 주석을 지정합니다.

void f ([ SA_Pre (Valid = SA_Yes) ] int pWidth );

참고   C 코드에서 특성 및 열거된 값에 SA_ prefix를 사용해야 합니다.

C++에서 주석 사용

C++에서는 #include <CodeAnalysis/SourceAnnotations.h> 파일을 추가한 후에 다음 네임스페이스를 추가합니다.

using namespace vc_attributes;

다음 코드와 같이 함수에 주석을 지정합니다.

void CMyClass::f ([ Pre (Valid = Yes) ] int pWidth )

참고

C++ 코드에서는 Yes, No, Maybe 등과 같이 열거형 값에 SA_ 접두사를 사용할 필요가 없습니다. 그러나 C 및 C++ 코드에 모두 사용할 헤더에는 SA_ 접두사를 사용해야 합니다. C++에서는 파생 클래스에서 주석을 상속할 수 없습니다.

참고 항목

참조

C6031