본문 바로가기

Basic/용어 정리

[용어 정리] SAL

 

SAL 이란?


SAL은 소스코드 주석언어로

해당 함수가  매개 변수를 사용하는 방법, 해당 매게 변수를 만드는 과정등을 설명하는 주석집합을 의미합니다

헤더파일<sal.h>에 정의 되어있습니다

간단하게 해당 코드에 대한 설명을 하나하나 적지않아도 SAL 주석을 통해 간단하게 이해 할 수있습니다

 

 

SAL은 네 가지 기본 유형의 사용 패턴으로 분류되는 매개변수를 정의 합니다

범주 매개 변수 주석 설명
함수 호출에 대한 입력 _In_ 해당 데이터는 호출된 함수에 전달되어 읽기 전용으로 취급됩니다
호출된 함수에 대한 입력과 호출자에 출력 _Inout_ 사용 가능한 데이터 함수에 전달되고 잠재적으로 수정 됩니다
호출자에 출력 _Out_ 호출자만 쓰려고 하는 호출된 함수에 대한 공간을 제공 합니다 호출된 함수는 해당 공간에 데이터를 씁니다
호출자에 포인터 출력 _Outptr_ 마찬가지로 호출자에 출력, 호출된 함수에서 반환되는 값이 있습니다.

이러한 네 가지 기본 주석은 필수 적인 매개 변수로 함수의 성공을 위해 필수 적으로 넣어줘야하는 매개 변수인 반면

필수적이지 않은 매개 변수 들도 존재합니다

예를들어

_In_opt__In_과 같은 호출된 함수에 대한 입력에 해당하는 매개변수지만 해당 매개변수를 입력하지않아도 함수는 성공적으로 작동합니다 이와같이 매개 변수 주석 뒤에 opt_를 붙여준다면 해당 주석은 필수적인지않은 매개변수라는 의미입니다

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)

WindowAPI에서 WinMain  함수를 가져와봤습니다

해당 함수에서 hPrevInstance는 _In_opt_로 필수적이지않은 매개변수라는 의미며, 나머지 매개변수는들 _In_  매개 변수 주석이 있는걸로보아 실행부분을 보지않더라도 필수적으로 입력해줘야하는 데이터의 값으로 인지 할 수 있습니다

이처럼 SAL은 함수에 매개변수들을 보다 쉽게 이해 할 수 있도록하는 주석 집합을 의미합니다

'Basic > 용어 정리' 카테고리의 다른 글

HUD와 UI  (0) 2021.11.10