Windows-SDK-Parameteranmerkungen

8

Ich frage mich, ob es wichtig ist, die Anmerkungen bei der Windows-Entwicklung in C ++ zu verwenden? Zum Beispiel,

%Vor%

Dies kann wie folgt geschrieben werden:

%Vor%

Was verliere ich, wenn ich sie nicht benutze? Ich habe eine schwierige Zeit herauszufinden, wofür diese da sind, es scheint keine Führer für Sterbliche geschrieben zu haben.

    
Shane 20.03.2011, 09:24
quelle

3 Antworten

6

Sie müssen mit einer älteren Version des SDK arbeiten. Version 7.0 deklariert die Argumente wie folgt:

%Vor%

Beachten Sie die __in_opt-Annotation. Sie markiert das Argument als optional und gibt an, dass die Übergabe von NULL zulässig ist. Dies ist eine frühe Version von SAL Annotationen, ein Akronym für Source Code Annotation Language. Für sie gibt es einen MSDN-Artikel , der jedoch die in der C / C ++ - Bibliothek verwendete Syntax dokumentiert #include Dateien. Nicht ganz sicher, warum die SDK-Gruppe nicht das selbe verwendet, sie neigen dazu, ein bisschen langsam aufzuholen.

Abgesehen davon, dass die Deklarationen besser lesbar sind und die Mehrdeutigkeit von C-Deklarationen beseitigt wird, sind die Anmerkungen auch für Tools nützlich. Gute Beispiele sind der Code Analyzer, der in die höheren SKUs für VS2008 und VS2010 integriert ist (Programmierfehler werden abgefangen). Und der P / Invoke Interop-Assistent, ein Tool, das C # oder VB.NET generiert / deklariert Deklarationen unter Verwendung einer dbase, die aus den kommentierten SDK-Header-Dateien generiert wurde. Die Anmerkungen sind wichtig, um gute C # -Deklarationen zu generieren.

Sie können diese Anmerkungen auch in Ihrem eigenen Code verwenden. Wenn Sie dies tun, wird dies automatisch vom Code Analyzer verifiziert. Verwenden Sie die moderne Syntax, die im MSDN-Artikel dokumentiert ist. Ich denke, dass der erforderliche sal.h-Header auf fast jede Quelldatei gezogen wird, die # CRT-Header enthält.

    
Hans Passant 20.03.2011, 21:13
quelle
3
  

Anmerkungen sind Token, die Sie Ihrem Quellcode hinzufügen (z. B. __in, __out und __inout), die Entwicklern und statischen Analysewerkzeugen zusätzliche Informationen über eine Funktion und ihre Parameter sowie deren beabsichtigten Zweck bereitstellen. Anmerkungen sind wie Kommentare, die Sie Ihrem Code hinzufügen und vom Compiler ignoriert werden, die jedoch von den statischen Analysewerkzeugen verwendet werden. Die Verwendung von Anmerkungen hilft, die Effektivität von Entwicklern zu verbessern, verbessert die Genauigkeit der Ergebnisse aus statischen Analysen und ermöglicht es den Tools, besser festzustellen, ob ein bestimmter Fehler vorliegt.

Quelle: Ссылка

Über die WINAPI Sache siehe Ссылка

    
ThiefMaster 20.03.2011 09:26
quelle
3

IIRC, die Schlüsselwörter __in und __out sind #define d zu nichts. Sie dienen nur dazu, den Zweck jedes Parameters zu verdeutlichen. __in -Parameter sind dafür ausgelegt, von der Funktion gelesen, aber nicht geändert zu werden, während __out -Parameter von der Funktion so modifiziert werden, dass sie einen Rückkehrcode zurückgeben.

Sie können sich __in als C ++ - Idee von "pass by const reference" oder "pass by value" und __out als "pass by non const reference" vorstellen. Das ist nicht wörtlich was es bedeutet, aber es hat die gleiche Bedeutung.

    
templatetypedef 20.03.2011 09:26
quelle

Tags und Links