亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sal.h

?? C語言庫函數的原型,有用的拿去
?? H
?? 第 1 頁 / 共 5 頁
字號:
/***
*sal.h - markers for documenting the semantics of APIs
*
*       Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
*       sal.h provides a set of annotations to describe how a function uses its
*       parameters - the assumptions it makes about them, and the guarantees it makes
*       upon finishing.
*
*       [Public]
*
****/

#pragma once
/*==========================================================================

   The macros are defined in 3 layers:

   _In_\_Out_ Layer:
   ----------------
   This layer provides the highest abstraction and its macros should be used
   in most cases. Its macros start with _In_, _Out_ or _Inout_. For the
   typical case they provide the most concise annotations.

   _Pre_\_Post_ Layer:
   ------------------
   The macros of this layer only should be used when there is no suitable macro
   in the _In_\_Out_ layer. Its macros start with _Pre_, _Post_, _Ret_,
   _Deref_pre_ _Deref_post_ and _Deref_ret_. This layer provides the most
   flexibility for annotations.

   Implementation Abstraction Layer:
   --------------------------------
   Macros from this layer should never be used directly. The layer only exists
   to hide the implementation of the annotation macros.


   Annotation Syntax:
   |--------------|----------|----------------|-----------------------------|
   |   Usage      | Nullness | ZeroTerminated |  Extent                     |
   |--------------|----------|----------------|-----------------------------|
   | _In_         | <>       | <>             | <>                          |
   | _Out_        | opt_     | z_             | [byte]cap_[c_|x_]( size )   |
   | _Inout_      |          |                | [byte]count_[c_|x_]( size ) |
   | _Deref_out_  |          |                | ptrdiff_cap_( ptr )         |
   |--------------|          |                | ptrdiff_count_( ptr )       |
   | _Ret_        |          |                |                             |
   | _Deref_ret_  |          |                |                             |
   |--------------|          |                |                             |
   | _Pre_        |          |                |                             |
   | _Post_       |          |                |                             |
   | _Deref_pre_  |          |                |                             |
   | _Deref_post_ |          |                |                             |
   |--------------|----------|----------------|-----------------------------|

   Usage:
   -----
   _In_, _Out_, _Inout_, _Pre_, _Post_, _Deref_pre_, _Deref_post_ are for
   formal parameters.
   _Ret_, _Deref_ret_ must be used for return values.

   Nullness:
   --------
   If the pointer can be NULL the annotation contains _opt. If the macro
   does not contain '_opt' the pointer may not be NULL.

   String Type:
   -----------
   _z: NullTerminated string
   for _In_ parameters the buffer must have the specified stringtype before the call
   for _Out_ parameters the buffer must have the specified stringtype after the call
   for _Inout_ parameters both conditions apply

   Extent Syntax:
   |------|---------------|---------------|
   | Unit | Writ\Readable | Argument Type |
   |------|---------------|---------------|
   |  <>  | cap_          | <>            |
   | byte | count_        | c_            |
   |      |               | x_            |
   |------|---------------|---------------|

   'cap' (capacity) describes the writable size of the buffer and is typically used
   with _Out_. The default unit is elements. Use 'bytecap' if the size is given in bytes
   'count' describes the readable size of the buffer and is typically used with _In_.
   The default unit is elements. Use 'bytecount' if the size is given in bytes.

   Argument syntax for cap_, bytecap_, count_, bytecount_:
   (<parameter>|return)[+n]  e.g. cch, return, cb+2

   If the buffer size is a constant expression use the c_ postfix.
   E.g. cap_c_(20), count_c_(MAX_PATH), bytecount_c_(16)

   If the buffer size is given by a limiting pointer use the ptrdiff_ versions
   of the macros.

   If the buffer size is neither a parameter nor a constant expression use the x_
   postfix. e.g. bytecount_x_(num*size) x_ annotations accept any arbitrary string.
   No analysis can be done for x_ annotations but they at least tell the tool that
   the buffer has some sort of extent description. x_ annotations might be supported
   by future compiler versions.

============================================================================*/

#define __ATTR_SAL

#ifdef _PREFAST_
// choose attribute or __declspec implementation
#ifndef _USE_DECLSPECS_FOR_SAL
#define _USE_DECLSPECS_FOR_SAL 0
#endif  /* _USE_DECLSPECS_FOR_SAL */

#if _USE_DECLSPECS_FOR_SAL
#undef _USE_ATTRIBUTES_FOR_SAL
#define _USE_ATTRIBUTES_FOR_SAL 0
#elif !defined (_USE_ATTRIBUTES_FOR_SAL)
#if _MSC_VER >= 1400 
#define _USE_ATTRIBUTES_FOR_SAL 1
#else  /* _MSC_VER >= 1400  */
#define _USE_ATTRIBUTES_FOR_SAL 0
#endif  /* _MSC_VER >= 1400  */
#endif  /* !defined (_USE_ATTRIBUTES_FOR_SAL) */


#if !_USE_DECLSPECS_FOR_SAL
#if !_USE_ATTRIBUTES_FOR_SAL
#if _MSC_VER >= 1400 
#undef _USE_ATTRIBUTES_FOR_SAL
#define _USE_ATTRIBUTES_FOR_SAL 1
#else  /* _MSC_VER >= 1400  */
#undef _USE_DECLSPECS_FOR_SAL
#define _USE_DECLSPECS_FOR_SAL  1
#endif  /* _MSC_VER >= 1400  */
#endif  /* !_USE_ATTRIBUTES_FOR_SAL */
#endif  /* !_USE_DECLSPECS_FOR_SAL */

#endif  /* _PREFAST_ */

// Disable expansion of SAL macros in non-Prefast mode to
// improve compiler throughput.
#ifndef _USE_DECLSPECS_FOR_SAL
#define _USE_DECLSPECS_FOR_SAL 0
#endif  /* _USE_DECLSPECS_FOR_SAL */
#ifndef _USE_ATTRIBUTES_FOR_SAL
#define _USE_ATTRIBUTES_FOR_SAL 0
#endif  /* _USE_ATTRIBUTES_FOR_SAL */

// safeguard for MIDL and RC builds
#if _USE_DECLSPECS_FOR_SAL && (defined (MIDL_PASS) || defined (__midl) || defined (RC_INVOKED) || !defined (_PREFAST_))
#undef _USE_DECLSPECS_FOR_SAL
#define _USE_DECLSPECS_FOR_SAL 0
#endif  /* _USE_DECLSPECS_FOR_SAL && (defined (MIDL_PASS) || defined (__midl) || defined (RC_INVOKED) || !defined (_PREFAST_)) */
#if _USE_ATTRIBUTES_FOR_SAL && (!defined (_MSC_EXTENSIONS) || defined (MIDL_PASS) || defined (__midl) || defined (RC_INVOKED))
#undef _USE_ATTRIBUTES_FOR_SAL
#define _USE_ATTRIBUTES_FOR_SAL 0
#endif  /* _USE_ATTRIBUTES_FOR_SAL && (!defined (_MSC_EXTENSIONS) || defined (MIDL_PASS) || defined (__midl) || defined (RC_INVOKED)) */

#if defined (_MSC_EXTENSIONS) && !defined (MIDL_PASS) && !defined (__midl) && !defined (RC_INVOKED)
#include "codeanalysis\sourceannotations.h"
#endif  /* defined (_MSC_EXTENSIONS) && !defined (MIDL_PASS) && !defined (__midl) && !defined (RC_INVOKED) */

//============================================================================
//   _In_\_Out_ Layer:
//============================================================================

// 'in' parameters --------------------------

// input pointer parameter
// e.g. void SetPoint( _In_ const POINT* pPT );
#define _In_                           _Pre1_impl_(_$notnull) _Deref_pre2_impl_(_$valid, _$readaccess)
#define _In_opt_                       _Pre_opt_valid_ _Deref_pre_readonly_

// nullterminated 'in' parameters.
// e.g. void CopyStr( _In_z_ const char* szFrom, _Out_z_cap_(cchTo) char* szTo, size_t cchTo );
#define _In_z_                         _Pre_z_      _Deref_pre_readonly_
#define _In_opt_z_                     _Pre_opt_z_  _Deref_pre_readonly_

// 'input' buffers with given size

// e.g. void SetCharRange( _In_count_(cch) const char* rgch, size_t cch )
// valid buffer extent described by another parameter
#define _In_count_(size)              _Pre_count_(size)         _Deref_pre_readonly_
#define _In_opt_count_(size)          _Pre_opt_count_(size)     _Deref_pre_readonly_
#define _In_bytecount_(size)          _Pre_bytecount_(size)     _Deref_pre_readonly_
#define _In_opt_bytecount_(size)      _Pre_opt_bytecount_(size) _Deref_pre_readonly_

// valid buffer extent described by a constant extression
#define _In_count_c_(size)            _Pre_count_c_(size)         _Deref_pre_readonly_
#define _In_opt_count_c_(size)        _Pre_opt_count_c_(size)     _Deref_pre_readonly_
#define _In_bytecount_c_(size)        _Pre_bytecount_c_(size)     _Deref_pre_readonly_
#define _In_opt_bytecount_c_(size)    _Pre_opt_bytecount_c_(size) _Deref_pre_readonly_

// nullterminated  'input' buffers with given size

// e.g. void SetCharRange( _In_count_(cch) const char* rgch, size_t cch )
// nullterminated valid buffer extent described by another parameter
#define _In_z_count_(size)              _Pre_z_ _Pre_count_(size)         _Deref_pre_readonly_
#define _In_opt_z_count_(size)          _Pre_opt_z_ _Pre_opt_count_(size)     _Deref_pre_readonly_
#define _In_z_bytecount_(size)          _Pre_z_ _Pre_bytecount_(size)     _Deref_pre_readonly_
#define _In_opt_z_bytecount_(size)      _Pre_opt_z_ _Pre_opt_bytecount_(size) _Deref_pre_readonly_

// nullterminated valid buffer extent described by a constant extression
#define _In_z_count_c_(size)            _Pre_z_ _Pre_count_c_(size)         _Deref_pre_readonly_
#define _In_opt_z_count_c_(size)        _Pre_opt_z_ _Pre_opt_count_c_(size)     _Deref_pre_readonly_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区欧美日韩| 中文字幕国产精品一区二区| 色悠久久久久综合欧美99| 国产成人av资源| 国产成人午夜视频| 北条麻妃国产九九精品视频| 国产激情偷乱视频一区二区三区| 国产精品一区在线| 国产成人夜色高潮福利影视| 丰满岳乱妇一区二区三区| 懂色av中文一区二区三区| 国产91丝袜在线播放0| 国产乱码精品1区2区3区| 国产一区二区精品久久| 成人av影视在线观看| fc2成人免费人成在线观看播放| 成人蜜臀av电影| 91麻豆文化传媒在线观看| 91福利精品视频| 欧美日韩国产高清一区二区 | 国产精品主播直播| 国产成人啪午夜精品网站男同| 国产一区二区三区黄视频| 国产精品888| 日本道色综合久久| 制服丝袜成人动漫| 日本一区二区在线不卡| 亚洲欧洲日本在线| 日韩不卡一二三区| 国产精品亚洲一区二区三区在线 | 在线视频一区二区免费| 91精品国产黑色紧身裤美女| 久久久久97国产精华液好用吗| 国产亚洲欧洲997久久综合| 亚洲欧洲一区二区在线播放| 亚洲超丰满肉感bbw| 精品一二线国产| 99这里只有精品| 欧美一区二区在线免费观看| 国产欧美日韩激情| 亚洲在线视频免费观看| 国产一区视频导航| 一本久道中文字幕精品亚洲嫩| 制服.丝袜.亚洲.中文.综合| 国产精品欧美极品| 久久国产精品色| 色就色 综合激情| 26uuu色噜噜精品一区| 亚洲国产成人av| 成人黄色一级视频| 欧美一级二级三级乱码| 夜夜精品浪潮av一区二区三区| 狠狠色伊人亚洲综合成人| 欧美影院精品一区| 中文字幕乱码一区二区免费| 久久精品国产网站| 精品1区2区3区| 综合久久给合久久狠狠狠97色| 久久99久久精品欧美| 欧美视频在线不卡| 亚洲欧洲国产日韩| 国产麻豆精品视频| 日韩女优制服丝袜电影| 午夜精品久久久久久久久久| a在线欧美一区| 久久新电视剧免费观看| 日本亚洲电影天堂| 欧美在线播放高清精品| 综合久久久久综合| 成人av第一页| 国产婷婷色一区二区三区在线| 美女在线观看视频一区二区| 欧美一三区三区四区免费在线看| 亚洲精品高清视频在线观看| 成人va在线观看| 日本一区二区免费在线观看视频 | 亚洲成人av中文| 日本高清免费不卡视频| 一区二区三区中文在线| 91福利在线导航| 亚洲国产三级在线| 欧美性生交片4| 亚洲成人综合网站| 欧美日韩美少妇| 五月天丁香久久| 欧美精品777| 蜜桃av一区二区三区| 精品国产1区二区| 国产风韵犹存在线视精品| 国产精品美女久久久久久久久| 成人激情开心网| 亚洲精品欧美综合四区| 欧美日韩精品系列| 久久国产精品露脸对白| 久久久国产精华| 成人精品视频一区二区三区尤物| 综合激情成人伊人| 欧美日韩一区不卡| 激情图片小说一区| 亚洲国产精品传媒在线观看| 色网站国产精品| 日本成人在线电影网| 久久―日本道色综合久久| 成人97人人超碰人人99| 一二三四社区欧美黄| 日韩视频在线观看一区二区| 粉嫩aⅴ一区二区三区四区| 亚洲欧美日韩一区二区三区在线观看| 欧美日韩中文字幕一区| 久久爱www久久做| 亚洲人成亚洲人成在线观看图片| 欧美精品日日鲁夜夜添| 国产成人综合网站| 丝袜美腿亚洲综合| 久久久久久亚洲综合影院红桃| 99久久婷婷国产| 久久91精品久久久久久秒播| 中文字幕在线播放不卡一区| 91精品国产一区二区| 成人性生交大片免费看中文| 日韩av中文字幕一区二区三区| 中文字幕不卡一区| 欧美一区二区在线不卡| 91色婷婷久久久久合中文| 日韩有码一区二区三区| 成人欧美一区二区三区黑人麻豆| 日韩三级免费观看| 91捆绑美女网站| 国产伦精一区二区三区| 视频一区二区国产| 欧美国产欧美综合| 日韩欧美专区在线| 精品视频一区三区九区| jlzzjlzz亚洲日本少妇| 国内国产精品久久| 麻豆成人综合网| 日产欧产美韩系列久久99| 国产精品日产欧美久久久久| 欧美成人艳星乳罩| 91精品国产综合久久久久久漫画| 91亚洲男人天堂| 成人看片黄a免费看在线| 精品午夜久久福利影院| 日韩在线一区二区三区| 午夜日韩在线观看| 亚洲愉拍自拍另类高清精品| 亚洲福利视频一区二区| 亚洲三级电影全部在线观看高清| 国产精品美日韩| 亚洲欧洲一区二区三区| 国产精品视频第一区| 中文字幕成人av| 国产欧美日韩精品一区| 欧美极品xxx| 亚洲人快播电影网| 亚洲天堂免费看| 亚洲欧美经典视频| 一区二区在线观看免费视频播放| ...av二区三区久久精品| 中文字幕精品三区| 亚洲国产成人在线| 椎名由奈av一区二区三区| 亚洲丝袜精品丝袜在线| 一区二区三区波多野结衣在线观看| 亚洲视频小说图片| 亚洲一区影音先锋| 日韩在线一二三区| 麻豆精品国产91久久久久久| 国产在线视频一区二区| 国产白丝精品91爽爽久久| 成人性生交大片| 91黄色免费网站| 7777精品久久久大香线蕉| 欧美一级欧美三级在线观看| www一区二区| 国产精品久久久久久久第一福利| 亚洲免费av高清| 亚洲成人资源网| 国产在线精品免费av| 成人国产精品免费| 欧美三级中文字幕| 精品欧美乱码久久久久久 | 亚洲三级理论片| 午夜不卡av免费| 精品一区二区免费在线观看| 99免费精品视频| 91精品国产欧美一区二区 | 成人av综合在线| 欧美午夜精品免费| 日韩精品一区二区三区中文精品| 国产日产欧美一区| 亚洲成a人在线观看| 国产美女精品在线| 欧美专区亚洲专区| 久久婷婷国产综合国色天香| 17c精品麻豆一区二区免费| 免费日韩伦理电影| 99v久久综合狠狠综合久久| 91精品国产一区二区三区蜜臀| 国产精品你懂的|