9

Also habe ich meine Zehen in Quellcode-Annotationen für C++ getaucht, aber entdeckt, dass es viele Wege nach Rom gibt, sozusagen.SAL-Annotationen, welche verwenden?

Beispiele:

__in 

_In_ 

[Pre(FormatString(Style="printf")] LPCSTR format 

Gibt es ein -Microsoft-Weg, dies zu tun?

+2

SAL konnte nur potentiell Sinn für C, nicht für C++. Aber bedenken Sie, dass Microsoft sogar die Annotationen von "MessageBox" falsch geschrieben hat. Das bedeutet, dass SAL schlimmer ist als wertloser Müll: Es fügt extreme Ausführlichkeit hinzu, die Programmierer verlangsamt, und die wenigen Informationen, die es vermittelt, sind oft falsch (wie in meinem Beispiel dargestellt) und verlangsamen nicht nur Programmierer, sondern führen sie auch aktiv in die Irre. Also selbst für C würde ich sagen, dass es ziemlich * kontraproduktiv ist, SAL zu verwenden. ** Sag einfach NEIN! ** –

+1

@ Cheersandhth.-Alf Ich kann nicht für Userland-Code sprechen, aber SAL ist eigentlich ziemlich vorteilhaft für die Fahrer. Besonders die '_IRQL' Annotationen – brc

+0

@ brc: uhm, ich habe es angeschaut. Abgesehen von der Frage "Wäre SAL der einzige Weg, um Garantien zu erreichen", sieht es fürchterlich komplex aus, während Interrupt-Anforderungspegel an sich eine einfache Sache sind. Das erinnert mich stark an Microsofts "Apartment" -Komplexitätsschema für das Threading in COM. viele Leute dachten, das sei sinnvoll. viele Leute denken immer noch z.B. 'WinMain' (gerade hinzugefügt, kontraproduktive bedeutungslose Komplexität) ist eine gute Idee. Also, ich vermute stark, dass dies auch für SAL-IRCL-Anmerkungen der Fall ist: dass sie einfach unnötigerweise Komplexität und Verschleierung hinzugefügt haben. –

Antwort

8

Microsoft hat einen neuen SAL-Standard (SAL 2.0) eingeführt, der mit Windows 8 beginnt. SAL 2.0 verwendet den einfachen Unterstreichungsstil von Anmerkungen, z. B. _In_opt_among others. Für den gesamten neuen Code wäre es daher am besten, dem SAL 2.0-Stil zu folgen, wie es von Microsoft bei slides gezeigt wird.

Für älteren Code scheint die allgemeine Regel "konsistent zu bleiben" der beste Weg zu sein, aber wenn Sie geneigt sind, all Ihre Anmerkungen zu aktualisieren, folgen Sie wieder dem SAL 2.0-Stil.

-

- SAL 2.0 ist eigentlich schon seit 2010 (überprüfen Sie das Datum auf der verknüpften Präsentation), aber es wurde nicht offiziell von außen, bis Windows 8 unterstützt werden, um das Beste aus meinem Wissen.

+0

VS2010 verwendet beide SAL-Aromen. Die ältere declspec SAL für die Windows-API und das neuere Attribut SAL für die CRT. – arx

1

Wahrscheinlich nicht, da SAL-Annotationen eine Metasprache ist, die statische Analysewerkzeuge helfen kann, den for-Fehler zur Kompilierzeit zu überprüfen, ich denke, dass es Compiler-abhängig sein könnte (für komplexe Überprüfungen zumindest in gewissem Maße) Sie möglicherweise nicht für alle eine Einweg, aber der Übergang von einem zum anderen ist nicht zu kompliziert