C++代码安全增强与标准注解语言SAL
2010-11-11 15:21:55 来源:WEB开发网核心提示:看着让人叹为观止的宏我们来说说其重点,[SA_Pre(p1)]这种元语言语法和C#的元语言语法类似,C++代码安全增强与标准注解语言SAL(2),没找到任何关于它的说明(有谁知道麻烦告诉我一声),别一种用法是 __declspec("SAL_pre"),虽然不一定要用它但了解一下总归是有帮助的,个人
看着让人叹为观止的宏我们来说说其重点,[SA_Pre(p1)]这种元语言语法和C#的元语言语法类似,没找到任何关于它的说明(有谁知道麻烦告诉我一声),别一种用法是 __declspec("SAL_pre"),这个容易理解就是一个标准的编译器扩展。类似的扩展支持多少?同样也没有看到文档说,不过不必担心,使用SAL的时候永远不会直接用到的它的。关于SAL的使用微软官方有两篇文档进行了介绍,这个是介绍vs2010的http://msdn.microsoft.com/en-us/library/ms235402.aspx,这个是介绍vs2005的http://msdn.microsoft.com/en-us/library/aa383701(VS.85).aspx。下面简单介绍一下SAL语法。
1、__in
用__in注解的函数将只从单元素的缓冲区中读取数据,而且这个缓冲区必须被初始化(不能为NULL);__in_ecount(n)与其相似但可以指定元素个数。
2、__out
用__out注解的函数表示数据缓冲区必须是有效的并且可以被调用代码废弃。
3、__in_opt
表示可选缓冲区当然缓冲区可以为NULL。
4、__inout
表示可以读/写的缓冲区。缓冲区必须被调用者初始化。
5、__bcount(n)
限定缓冲区大小为n字节。
6、_ecount(n)
限定元素个数为n。
7、__checkReturn
调用者必须检查返回值,不允许忽略。
SAL的关健字很多就不一一介绍了,希望看这个贴子的读者能对SAL有个感性的认识,虽然不一定要用它但了解一下总归是有帮助的。个人理解不同难免会有疏漏,如果你要是准备使用SAL建议还是多看看MSDN吧。
[]
更多精彩
赞助商链接