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

SAL注释类似于_Check_return__Must_inspect_result_仅在代码分析构建期间(通过在IDE中启动代码分析构建或通过在命令行上使用/ analyze标记构建)进行检查。

请参阅MSDN上的"Understanding SAL"了解更多信息。

+0

我明白了。在VC++构建中没有'/ analyze'的强制执行返回码检查的方法吗?我正在寻找一个VC++类似于'__attribute __((warn_unused_result))'。 – MarkP

+0

不是我的知识,没有。 –