0

크로스 플랫폼 빌드가 있습니다. GCC를 사용하는 * nix 플랫폼에서 반환 값을 확인하지 않으면 __attribute__((warn_unused_result))을 사용하여 사용자에게 API를 알립니다. 나는 _Check_return이 MSVC에서 똑같은 일을한다고 가정했지만 예상대로 작동하지 않는 것으로 보입니다.Visual Studio 2015가 _Check_return_ 또는 _Must_inspect_result_을 준수하지 않습니다.

다음 코드는 예상대로 경고를 생성하지 않습니다. 경고는 /Wall으로 설정됩니다.

_Check_return_ _Must_inspect_result_ int foo() 
{ 
    return 100; 
} 


int main() 
{ 
    foo(); 

    return 0; 
} 

코드는 경고없이 컴파일됩니다. 무엇이 잘못 되었습니까 (또는 체크되지 않은 반환 코드에 대한 경고를 생성하기 위해 사용해야합니까?).

답변

3

_Check_return__Must_inspect_result_과 같은 SAL 주석은 코드 분석 빌드 중에 (IDE에서 코드 분석 빌드를 시작하거나 명령 줄에서/analyze 플래그를 사용하여 빌드하여) 확인해야합니다.

자세한 내용은 MSDN의 "Understanding SAL"을 참조하십시오.

+0

나는 본다. VC++ 빌드에서'/ analyze'없이 리턴 코드 검사를 시행 할 수있는 방법이 있습니까? 나는 VC++ analog을 '__attribute __ ((warn_unused_result))'에 대해 찾고있다. – MarkP

+0

제 지식으로는 아니요. –