9

इसलिए मैंने अपने पैर की उंगलियों को सी ++ के लिए स्रोत कोड एनोटेशन में डुबो दिया है, लेकिन पता चला कि रोम के कई तरीके हैं, इसलिए बोलने के लिए।एसएएल एनोटेशन, किस का उपयोग करना है?

उदाहरण:

__in 

_In_ 

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

वहाँ एक माइक्रोसॉफ्ट तरह से यह करने के लिए है?

+2

एसएएल केवल सी ++ के लिए नहीं, सी के लिए संभावित रूप से समझ सकता है। लेकिन मान लें कि माइक्रोसॉफ्ट को 'मेसेजबॉक्स' की गलत टिप्पणियां भी मिली हैं। इसका मतलब है कि एसएएल बेकार जंक से भी बदतर है: इसमें चरम वर्बोजिटी दिखाई देती है जो प्रोग्रामर को धीमा कर देती है, और जो छोटी जानकारी बताती है वह अक्सर गलत होती है (जैसा कि मेरा उदाहरण दिखाता है), इस प्रकार न केवल प्रोग्रामर को धीमा कर देता है बल्कि सक्रिय रूप से उन्हें भ्रामक बनाता है। तो सी के लिए भी मैं कहूंगा कि यह एसएएल का उपयोग करने के लिए सुंदर * काउंटर-उत्पादक * है। ** बस कहें नहीं! ** –

+1

@ चीयर्संधथ.-अल्फ मैं उपयोगकर्तालैंड कोड के लिए बात नहीं कर सकता, लेकिन एसएएल वास्तव में ड्राइवरों के लिए काफी फायदेमंद है। विशेष रूप से '_IRQL' एनोटेशन – brc

+0

@brc: उहम, मैंने इसे देखा। प्रश्न के अलावा "एसएएल गारंटी प्राप्त करने का एकमात्र तरीका होगा" यह बहुत जटिल दिखता है, जबकि खुद में अनुरोध स्तर को बाधित करना एक साधारण बात है। इसलिए यह मुझे COM में थ्रेडिंग के लिए माइक्रोसॉफ्ट के "अपार्टमेंट" जोड़ा-जटिलता योजना की दृढ़ता से याद दिलाता है। कई लोगों ने सोचा कि सार्थक था। कई लोग अभी भी सोचते हैं उदा। 'विनमेन' (अभी जोड़ा गया है, काउंटर-उत्पादक अर्थहीन जटिलता) एक अच्छा विचार है। इसलिए, मुझे दृढ़ता से संदेह है कि एसएएल _आईआरसीएल एनोटेशन के लिए भी मामला है: कि वे केवल जटिलता और अपवित्रता को जोड़ते हैं। –

उत्तर

8

माइक्रोसॉफ्ट ने विंडोज 8 से शुरू एक नया एसएएल मानक (SAL 2.0) पेश किया है। एसएएल 2.0 एनोटेशन की सिंगल अंडरस्कोर शैली का उपयोग करता है, जैसे कि _In_opt_among others। इस प्रकार, सभी नए कोड के लिए, सबसे अच्छा अभ्यास एसएएल 2.0 शैली का पालन करना होगा, माइक्रोसॉफ्ट प्रदर्शनी से slides के रूप में।

पुराने कोड के लिए, "लगातार बने रहने" का सामान्य नियम जाने का सबसे अच्छा तरीका प्रतीत होता है, लेकिन यदि आप अपनी सभी टिप्पणियों को अपडेट करने के इच्छुक हैं, तो फिर SAL 2.0 शैली का पालन करें।

-

- साल 2.0 वास्तव में, 2010 के बाद से आसपास किया गया (लिंक किए गए प्रस्तुति पर तिथि की जांच) है, लेकिन यह आधिकारिक तौर पर विंडोज 8 तक बाहर से समर्थित नहीं किया गया है का सबसे अच्छा करने के लिए अपने ज्ञान।

+0

वीएस -2010 दोनों एसएएल स्वाद का उपयोग करता है। विंडोज एपीआई के लिए पुराने declspec एसएएल और सीआरटी के लिए नई विशेषता एसएएल। – arx

1

शायद नहीं, क्योंकि एसएएल एनोटेशन एक मेटा-भाषा है जो स्थिर विश्लेषण उपकरण को संकलन समय पर बग की जांच करने में मदद कर सकती है, मुझे लगता है कि यह संकलक निर्भर हो सकता है (कम से कम कुछ हद तक जटिल जांच के लिए) तो आप उनमें से सभी के लिए एक तरफ नहीं हो सकता है, लेकिन एक से दूसरे में संक्रमण बहुत जटिल नहीं है

संबंधित मुद्दे