有没有相当于gcc的__attribute__(returns_nonnull))的MSVC?

问题描述 投票:0回答:1

今天了解了GCC/Clang的这个小特性:

Something * MyFunctionThatNeverReturnsNULL() __attribute__((returns_nonnull))
{
   // code here that will return a NULL value
   static Something blah;
   return &blah;
}

[...]

int main()
{
   Something * s = MyFunctionThatNeverReturnsNULL();
   if (s) // useful:  compiler generates a warning here since this test will always return true!
   {
      // do something
   }
   else
   {
      // do something else
   }
}

此功能很有用,因为如果我调用的代码错误地期望 NULL 返回值来指示失败,则

__attribute__((returns_nonnull))
注释允许编译器打印警告,以便我知道查看该代码并修复它。

我的问题是,MSVC 是否有类似/等效的东西,以便在 Windows 下编译时可能会生成相同类型的警告?

c++ visual-c++ attributes warnings
1个回答
0
投票

_Ret_notnull_
是您可以使用的标准 SAL Annotations 之一。

前向声明的示例:

#include <sal.h>

Ret_notnull_ Something* MyFunctionThatNeverReturnsNULL();

至于如何启用编译器或 prefast 工具来检测此类错误......让我回到我的办公桌上检查是否有有效的示例。我稍后会更新这个答案。

© www.soinside.com 2019 - 2024. All rights reserved.