Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Meaning of __in , __out, __in_opt

What is the meaning of these keywords used before variables in a function parameters?

  • __in
  • __out
  • __in_opt
like image 583
Zcube Avatar asked Mar 23 '12 05:03

Zcube


1 Answers

Those are some of the older decoration macro's from Microsoft's SAL Annotations (the newer ones now follow different casing, starting with a capital). These have no real affect on compilation (under VS 2010 they aren't even expanded), they are there for inline API documentation.

  1. __in: this parameter is an input to the function (read-only, caller initialized).
  2. __out: this parameter contains output from the function when it returns (write-only, caller initialized).
  3. __in_opt: a compound annotation formed from _in and _opt, _opt indications that the parameter is optional and can be set to a default value (generally NULL).

You can get the full explanation here of the older decorations here.

like image 87
Necrolis Avatar answered Oct 24 '22 23:10

Necrolis