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

不是我的知識,沒有。 –