
على الرغم من بساطة (وبشكل عام ، التفاهات ، إذا كنت تفكر في ذلك) للحل الموصوف ، فقد تعثرت عليه بالصدفة البحتة ، بينما كنت أقوم بتعليق البرنامج النهائي جاهز للتسليم.
في ممارسة البرمجة ، يحدث الموقف بانتظام عندما يكون مطلوبًا أثناء التطوير والتصحيح تشغيل بعض التعليمات البرمجية وإيقاف تشغيل رمز آخر. من السهل القيام بذلك مع إنشاءات خاصة مثل
#if true ... #else ... #endif
، أو تغيير
true
إلى
false
، أو اللجوء إلى ظروف أكثر تطوراً.
ومع ذلك ، لا يسمح هذا التصميم بإنشاء أكثر من قسمين بديلين من التعليمات البرمجية.في اللغات التي تدعم تعليقًا مثل
/* ... */
c ، باستخدام إنشاء غير قياسي قليلاً
/**/ ... /*/ ... /*/ ... /**/
يمكنك إنشاء أكبر عدد ممكن من الأقسام التناوبية للرمز والتي سيتم تشغيله وإيقافه بالتناوب مع وجود مساحة واحدة فقط في أول (بداية) التعليقات.
على سبيل المثال:
Console.Write("1"); Console.Write("3"); Console.Write("5");
عند تنفيذه ، سينتج هذا الرمز السلسلة
"135"
إلى وحدة التحكم. بمعنى ، سيتم تنفيذ جميع مشغلي المخرجات الفردية - والآخر ، والذي هو بالفعل خارج الهيكل بأكمله. ولكن إذا قمت بإدخال مسافة (أو ، بكلمات صارمة ، أي حرف ما عدا العلامة النجمية) في تعليق البدء بين العلامة النجمية الثانية والشرطة المائلة ، فإن نفس الكود سينتج السلسلة
"245"
: لن يتم تنفيذ سوى المشغلين ، ومرة أخرى آخر حرف بالفعل خارج. (UPD: شكرا
FluffyMan على الإشارة إلى الخطأ).
بناء جملة التعليقات الفاصلة صارم للغاية: لا يمكنك إضافة أو إضافة أي شيء إلى
/*/
build ، وهذا سوف يدمر وظائفه. بناء الجملة من البداية ووقف التعليقات على العكس هو تعسفي تماما. يمكن أن يكون أضيق الحدود إلى
/**/
، أو يمكن أن يحتوي على أي تعليقات - قانونية بمعنى اللغة - تعليقات. من الواضح أن هناك حاجة ماسة إلى بدء وإيقاف التعليقات ، وأنه من المستحيل ببساطة استخدام تعليق قانوني مثل
/* ... */
داخل الهيكل نفسه ، لأن ستصبح على الفور محطة لكامل التسلسل السابق لفواصل التعليق
/*/
، وبداية لسلسلة كاملة لاحقة منها. لكن الاستخدام المجدي لمثل هذه الإدخالات قد يكون مفيدًا.
التعليقات أحادية السطر
//
لا تؤثر على الوظيفة.
ديكسي :)