#define __in
#define __out
#define __in_opt
翻译来自stackoverflow。
以上来自于SAL注释语言,(Source-code Annotation Language)。
SAL annotations are useful for two things:
- Static analysis through PREfast (compile with /analyze)
- Human readers can look at the annotations and figure out how a function should be called, and quickly determine the input/output parameters.
_In_Opt_
means you may pass NULL
.
in
means the parameter is supplied by you,out
means it's returned by the function,opt
means optional (can be 0 — a null pointer or handle)They are hints for automation languages (and for you, I guess).
They are simple #defines
that expand to nothing, just to help document the function parameters: whether the caller must provide valid params (_In_
) for the function to work; whether the caller can optionally provide default values (_In_opt_
); whether the function will fill in the params on return (_Out_
), or whether parameter both passes values in and receives values out (_Inout_
).