C++代码安全增强与标准注解语言SAL
2010-11-11 15:21:55 来源:WEB开发网核心提示:#define _Pre3_impl_(p1,p2,p3) [SA_Pre(p1,p2,p3)]<BR> #define _Deref_pre1_impl_(p1) [SA_Pre(Deref=1,p1)]<BR> #define _Post_
#define _Pre3_impl_(p1,p2,p3) [SA_Pre(p1,p2,p3)]<BR>
#define _Deref_pre1_impl_(p1) [SA_Pre(Deref=1,p1)]<BR>
#define _Post_z_ _Post1_impl_(_$zterm) _Deref_post1_impl_(_$valid)<BR>
<BR>
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1) \ extern "C++" \ { \ template <size_t _Size> \ inline \ _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1) \ { \ return _FuncName(_Dst, _Size, _TArg1); \ } \ } #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _FuncName##_s, _DstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) #define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1) \ _CRT_INSECURE_DEPRECATE(_SecureFuncName) _DeclSpec _ReturnType __cdecl _FuncName(_SalAttributeDst _DstType *_Dst, _TType1 _TArg1); //输出的提示信息在这儿,没错就是它 #define _CRT_INSECURE_DEPRECATE(_Replacement) _CRT_DEPRECATE_TEXT("This function or variable may be unsafe. Consider using " #_Replacement " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.") #define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated(_Text)) #define __RETURN_POLICY_DST(_FunctionCall, _Dst) return ((_FunctionCall) == 0 ? _Dst : 0) #define __EMPTY_DECLSPEC
看着让人叹为观止的宏我们来说说其重点,[SA_Pre(p1)]这种元语言语法和C#的元语言语法类似,没找到任何关于它的说明(有谁知道麻烦告诉我一声),别一种用法是 __declspec("SAL_pre"),这个容易理解就是一个标准的编译器扩展。类似的扩展支持多少?同样也没有看到文档说,不过不必担心,使用SAL的时候永远不会直接用到的它的。关于SAL的使用微软官方有两篇文档进行了介绍,这个是介绍vs2010的http://msdn.microsoft.com/en-us/library/ms235402.aspx
- ››增强用户的体验愉悦性和专注度:保持用户的游戏体验...
- ››增强 WebSphere Service Registry and Repository...
- ››增强的恶意软件检测
- ››增强webprint打印控件一次打印多份文档的方法
- ››增强Windows7右键 让操作更简单
- ››增强 WebSphere eXtreme Scale 的 xsadmin
- ››增强SQL Server 2008的可管理性
- ››增强网站安全性,data目录隐藏功能设置详解
- ››增强Exchange服务器的安全性
- ››增强型命令行 不错的系统辅助工具
- ››增强互动 酷我音乐盒新版听歌会友
- ››增强GridCtrl
更多精彩
赞助商链接