请教高手! __allowed(on_parameter) ,__ecount等等 是干什么用的?

热爱生活 2012-02-03 03:06:48
#if (_MSC_VER >= 1400) && !defined(__midl) && !defined(_PREFAST_) && (__SPECSTRINGS_STRICT_LEVEL > 0)
#pragma once
#include <specstrings_undef.h>
#define (size) (on_return)
#define __bcount(size) __allowed(on_return)
#define __xcount(size) __allowed(on_return)
#define __in __allowed(on_parameter)
#define __in_ecount(size) __allowed(on_parameter)
#define __in_bcount(size) __allowed(on_parameter)
#define __in_xcount(size) __allowed(on_parameter)
#define __in_z __allowed(on_parameter)
#define __in_ecount_z(size) __allowed(on_parameter)
#define __in_bcount_z(size) __allowed(on_parameter)
#define __out __allowed(on_parameter)
#define __out_ecount(size) __allowed(on_parameter)
#define __out_bcount(size) __allowed(on_parameter)
#define __out_xcount(size) __allowed(on_parameter)
#define __out_ecount_part(size,len) __allowed(on_parameter)
#define __out_bcount_part(size,len) __allowed(on_parameter)
#define __out_xcount_part(size,len) __allowed(on_parameter)
#define __out_ecount_full(size) __allowed(on_parameter)
#define __out_bcount_full(size) __allowed(on_parameter)
#define __out_xcount_full(size) __allowed(on_parameter)
#define __out_z __allowed(on_parameter)
#define __out_ecount_z(size) __allowed(on_parameter)
#define __out_bcount_z(size) __allowed(on_parameter)
#define __inout __allowed(on_parameter)
#define __inout_ecount(size) __allowed(on_parameter)
#define __inout_bcount(size) __allowed(on_parameter)
#define __inout_xcount(size) __allowed(on_parameter)
#define __inout_ecount_part(size,len) __allowed(on_parameter)
#define __inout_bcount_part(size,len) __allowed(on_parameter)
#define __inout_xcount_part(size,len) __allowed(on_parameter)
#define __inout_ecount_full(size) __allowed(on_parameter)
#define __inout_bcount_full(size) __allowed(on_parameter)
#define __inout_xcount_full(size) __allowed(on_parameter)
#define __inout_z __allowed(on_parameter)
#define __inout_ecount_z(size) __allowed(on_parameter)
#define __inout_bcount_z(size) __allowed(on_parameter)
#define __ecount_opt(size) __allowed(on_parameter)
#define __bcount_opt(size) __allowed(on_parameter)
#define __xcount_opt(size) __allowed(on_parameter)
#define __in_opt __allowed(on_parameter)
#define __in_ecount_opt(size) __allowed(on_parameter)
#define __in_bcount_opt(size) __allowed(on_parameter)
#define __in_z_opt __allowed(on_parameter)
#define __in_ecount_z_opt(size) __allowed(on_parameter)
#define __in_bcount_z_opt(size) __allowed(on_parameter)
#define __in_xcount_opt(size) __allowed(on_parameter)
#define __out_opt __allowed(on_parameter)
#define __out_ecount_opt(size) __allowed(on_parameter)
#define __out_bcount_opt(size) __allowed(on_parameter)
#define __out_xcount_opt(size) __allowed(on_parameter)
#define __out_ecount_part_opt(size,len) __allowed(on_parameter)
#define __out_bcount_part_opt(size,len) __allowed(on_parameter)
#define __out_xcount_part_opt(size,len) __allowed(on_parameter)
#define __out_ecount_full_opt(size) __allowed(on_parameter)
#define __out_bcount_full_opt(size) __allowed(on_parameter)
#define __out_xcount_full_opt(size) __allowed(on_parameter)
#define __out_ecount_z_opt(size) __allowed(on_parameter)
#define __out_bcount_z_opt(size) __allowed(on_parameter)
#define __inout_opt __allowed(on_parameter)
#define __inout_ecount_opt(size) __allowed(on_parameter)
#define __inout_bcount_opt(size) __allowed(on_parameter)
#define __inout_xcount_opt(size) __allowed(on_parameter)
#define __inout_ecount_part_opt(size,len) __allowed(on_parameter)
#define __inout_bcount_part_opt(size,len) __allowed(on_parameter)
#define __inout_xcount_part_opt(size,len) __allowed(on_parameter)
#define __inout_ecount_full_opt(size) __allowed(on_parameter)
#define __inout_bcount_full_opt(size) __allowed(on_parameter)
#define __inout_xcount_full_opt(size) __allowed(on_parameter)
#define __inout_z_opt __allowed(on_parameter)
。。。。。。。。
...全文
387 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
热爱生活 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cxsjabcabc 的回复:]
很多都没什么具体的作用,只是被定义的空的宏。
[/Quote]
谢谢!
热爱生活 2012-02-04
  • 打赏
  • 举报
回复
他们是怎样工作的呢?!
程序员小迷 2012-02-04
  • 打赏
  • 举报
回复
很多都没什么具体的作用,只是被定义的空的宏。
Jim_King_2000 2012-02-03
  • 打赏
  • 举报
回复
微软内部给静态分析工具用的,你当它们都不存在就是了。
热爱生活 2012-02-03
  • 打赏
  • 举报
回复
/* client/server */
RPCRTAPI //#define RPCRTAPI DECLSPEC_IMPORT
RPC_STATUS //typedef long RPC_STATUS;
RPC_ENTRY //#define RPC_ENTRY __stdcall
UuidToStringW (
__in const UUID __RPC_FAR * Uuid,
//typedef struct _GUID {
//unsigned long Data1;
//unsigned short Data2;
//unsigned short Data3;
//unsigned char Data4[ 8 ];
//} GUID;

//typedef GUID UUID;
__deref_out RPC_WSTR __RPC_FAR * StringUuid
//typedef __nullterminated unsigned short __RPC_FAR * RPC_WSTR;


);
其实我是看到这里不懂的。
这里面,RPCRTAPI //#define RPCRTAPI DECLSPEC_IMPORT
RPC_STATUS //typedef long RPC_STATUS;
RPC_ENTRY //#define RPC_ENTRY __stdcall
UuidToStringW
怎么这么多的修饰?
我们通常不就是定义一耳光类加一个类名吗?这里怎么连续四个?
还有这里:

__in const UUID __RPC_FAR * Uuid,
怎么回事?
请高手讲解一下!
十分感谢!
Jim_King_2000 2012-02-03
  • 打赏
  • 举报
回复
这个是给静态检查工具用的,你不用去管它。
热爱生活 2012-02-03
  • 打赏
  • 举报
回复
最近看代码,看到不知何意。。。请高手详细讲解一下,这些东东是什么用的?我好生疑惑。

64,667

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧