Jakie jest znaczenie tych słów kluczowych używanych przed zmiennymi w parametrach funkcji ?Znaczenie __in, __out, __in_opt
__in
__out
__in_opt
Jakie jest znaczenie tych słów kluczowych używanych przed zmiennymi w parametrach funkcji ?Znaczenie __in, __out, __in_opt
__in
__out
__in_opt
Są to niektóre starsze dekoracji makra z SAL adnotacje Microsoftu (the newer ones teraz podążać inną obudowę, zaczynając od kapitału). Nie mają one rzeczywistego wpływu na kompilację (w VS 2010 nie są one nawet rozszerzane), są one dostępne do wbudowanej dokumentacji interfejsu API.
__in
: ten parametr jest wprowadzeniem do funkcji (tylko do odczytu, inicjowany program wywołujący).__out
: ten parametr zawiera dane wyjściowe funkcji po jej zwróceniu (tylko do zapisu, inicjowany wywołujący).__in_opt
: adnotacji związek utworzony z _in
i _opt
, _opt
wskazania, że parametr jest opcjonalna i może być ustawione na wartość domyślną (zazwyczaj NULL
).Tutaj można uzyskać pełne wyjaśnienie starszych dekoracji here.
jest bardzo szczegółowy dzięki bardzo bardzo. Szukałem przez długi czas, w końcu znalazłem odpowiedź tutaj. – Zcube
Jak odpowiedział Nercolis, są to adnotacje atrybutów SAL. Jednak nie są to tylko wewnętrzne lub tylko dla dokumentacji API . Rzeczywistym celem jest analiza kodu . Podczas budowania projektu za pomocą opcji kompilatora /analyze (Właściwości projektu, Analiza kodu -> Ogólne) odgrywają one ważną rolę w znajdowaniu problemów związanych z kodowaniem.
Na przykład, jeśli określony argument wskaźnika mówi: __in
, to nie można go przekazać zerowym wskaźnikiem. Funkcja nie sprawdzi wartości NULL i może spowodować SEH. Argument __in_opt
może być pusty. Gdy kompilator znajdzie jakiś problem, zgłasza to jako ostrzeżenie. Zobacz this article.
to nie są słowa kluczowe, to jest adnotacja SAL Microsoftu – Necrolis
dzięki, to znaczy, że nie ma żadnego istotnego efektu? – Zcube
dla kompilatora nie, dla programisty powinien pomóc mu/jej poprawnie korzystać z API. – Necrolis