SAL注释会触发编译器报告错误吗?

时间:2018-10-15 10:37:31

标签: c++ windows winapi sal

我正在学习SAL注释,我在Visual Studio 2017中测试了此示例。

我认为当我将NULL指针传递给InCallee时,编译器将报告警告或错误,但是它仍然可以正确构建。所以我的问题是SAL是否像代码注释一样,并且不会验证合法性数据,还是可以检查数据,仅仅是因为我做错了什么?

void InCallee(_In_ int *pInt) //_In_ is allowed to be NULL 
{
   int i = *pInt;
}

void GoodInCaller()
{
   int *pInt = new int;
   *pInt = 5;

   InCallee(pInt);
   delete pInt;
}

void BadInCaller()
{
   int *pInt = NULL;
   InCallee(pInt); // pInt should not be NULL
}

0 个答案:

没有答案