9

Więc zanurzyłem palce w adnotacjach kodu źródłowego dla C++, ale odkryłem, że Rzym ma wiele sposobów, że tak powiem.Adnotacje SAL, z których użyć?

Przykłady:

__in 

_In_ 

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

Czy istnieje jeden -microsoft-sposób to zrobić?

+2

SAL może mieć tylko potencjalne znaczenie dla C, nie dla C++. Ale zastanów się, czy Microsoft nie poprawił nawet adnotacji "MessageBox". Oznacza to, że SAL jest gorsza od bezwartościowych rupieci: dodaje skrajnej gadatliwości, która spowalnia programistów, a przekazane informacje są często błędne (co ilustruje mój przykład), co nie tylko spowalnia programistów, ale także aktywnie je wprowadza w błąd. Więc nawet w przypadku C powiedziałbym, że używanie * SAL jest całkiem * nieproduktywne *. ** Po prostu powiedz NIE! ** –

+1

@ Cheersandhth.-Alf Nie mogę mówić o kodzie użytkownika, ale SAL jest w rzeczywistości całkiem korzystna dla kierowców. W szczególności "_IRQL" adnotacje – brc

+0

@brc: uhm, spojrzałem na to. poza pytaniem "czy SAL byłaby jedyną drogą do uzyskania gwarancji" wygląda to niezwykle skomplikowanie, podczas gdy poziomy żądania przerwania same w sobie są prostą rzeczą. więc bardzo przypomina mi Microsoft o "złożonym" schemacie złożoności dodawanym przez Microsoft do wątków w COM. wiele osób uważało, że miało to sens. wiele osób wciąż myśli np. "WinMain" (tylko dodany, nieproduktywna, pozbawiona znaczenia złożoność) to dobry pomysł. tak więc mocno podejrzewam, że tak jest również w przypadku adnotacji SAL _IRCL: że po prostu niepotrzebnie dodają złożoności i zaciemnienia. –

Odpowiedz

8

Microsoft wprowadził nowy standard Sal (SAL 2.0), poczynając od Windows 8 . SAL 2.0 używa stylu podkreślenia pojedynczego adnotacji, takiego jak _In_opt_among others. Tak więc, dla wszystkich nowych kodów, najlepszą praktyką byłoby podążanie stylem SAL 2.0, jak slides z wystawy Microsoft.

W przypadku starszego kodu ogólna zasada "zachowywania spójności" wydaje się być najlepszym sposobem, ale jeśli masz ochotę zaktualizować wszystkie swoje adnotacje, ponownie zastosuj styl SAL 2.0.

-

- SAL 2,0 rzeczywiście istnieje od 2010 roku (sprawdź datę w połączonej prezentacji), ale nie został on oficjalnie obsługiwane zewnętrznie aż Windows 8, do mojej najlepszej wiedza, umiejętności.

+0

VS2010 wykorzystuje oba aromaty SAL. Starsza wersja declspec SAL dla Windows API i nowszy atrybut SAL dla CRT. – arx

1
nie

Prawdopodobnie, ponieważ adnotacje SAL jest meta-język, który może pomóc w narzędzia do analizy statycznej, aby sprawdzić za błąd w czasie kompilacji, myślę, że to może być kompilator zależne (w przypadku skomplikowanych kontroli przynajmniej do pewnego stopnia) Więc może nie być jednokierunkowe dla wszystkich, ale przejście z jednego do drugiego nie jest zbyt skomplikowane.