代码之家  ›  专栏  ›  技术社区  ›  Kevin Doyon Zephaniah Grunschlag

奇怪的警告

  •  3
  • Kevin Doyon Zephaniah Grunschlag  · 技术社区  · 17 年前

    我试图在我的项目中使用Micosoft的SAL注释,但是我得到了以下警告,我不知道为什么。

    作为一个例子,我创建了一个新的C++控制台应用程序,并有这个代码:

    #include <sal.h>
    
    class Whatever
    {
    public:
        _Check_return_ int Method(__in int number) ;
    };
    
    int main()
    {
        return 0;
    }
    

    在文件“cxxast”中

    _Check_return_ 或者 __in ,警告消失了。

    我找不到任何关于C6550警告的参考资料。但是,可以在此处找到相同的文本: http://msdn.microsoft.com/en-us/library/dd445322.aspx

    2 回复  |  直到 12 年前
        1
  •  10
  •   thehouse    17 年前

    问题可能是因为混合了SAL注释类型。虽然在MSDN上非常清楚,但是有两种类型的SAL注释:属性和。。。呃。。。不

    这个 #define 在哪 <sal.h> VC2005使用非属性版本,以下划线开头,后跟 信较新的VC2008版本扩展到编译器属性,并以下划线和

    您混合了这两种类型:

    • _在_

    • __在

    尝试更改注释以一致地使用单个类型。

    This blog post 对此有更多的解释。

        2
  •  1
  •   JaredPar    17 年前

    编辑 澄清

    对于非抽象方法,SAL注释必须出现在两个位置上。对于抽象方法,SAL不会寻找定义。在某些配置中,它将实际确保接口的实现具有适当的符号。