التعليق خارج الكود: اختراق الحياة الصغيرة

على الرغم من بساطة (وبشكل عام ، التفاهات ، إذا كنت تفكر في ذلك) للحل الموصوف ، فقد تعثرت عليه بالصدفة البحتة ، بينما كنت أقوم بتعليق البرنامج النهائي جاهز للتسليم.

في ممارسة البرمجة ، يحدث الموقف بانتظام عندما يكون مطلوبًا أثناء التطوير والتصحيح تشغيل بعض التعليمات البرمجية وإيقاف تشغيل رمز آخر. من السهل القيام بذلك مع إنشاءات خاصة مثل #if true ... #else ... #endif ، أو تغيير true إلى false ، أو اللجوء إلى ظروف أكثر تطوراً. ومع ذلك ، لا يسمح هذا التصميم بإنشاء أكثر من قسمين بديلين من التعليمات البرمجية.

في اللغات التي تدعم تعليقًا مثل /* ... */ c ، باستخدام إنشاء غير قياسي قليلاً /**/ ... /*/ ... /*/ ... /**/ يمكنك إنشاء أكبر عدد ممكن من الأقسام التناوبية للرمز والتي سيتم تشغيله وإيقافه بالتناوب مع وجود مساحة واحدة فقط في أول (بداية) التعليقات.

على سبيل المثال:

 /**/ Console.Write("1"); /*/ Console.Write("2"); /*/ Console.Write("3"); /*/ Console.Write("4"); /**/ Console.Write("5"); 

عند تنفيذه ، سينتج هذا الرمز السلسلة "135" إلى وحدة التحكم. بمعنى ، سيتم تنفيذ جميع مشغلي المخرجات الفردية - والآخر ، والذي هو بالفعل خارج الهيكل بأكمله. ولكن إذا قمت بإدخال مسافة (أو ، بكلمات صارمة ، أي حرف ما عدا العلامة النجمية) في تعليق البدء بين العلامة النجمية الثانية والشرطة المائلة ، فإن نفس الكود سينتج السلسلة "245" : لن يتم تنفيذ سوى المشغلين ، ومرة ​​أخرى آخر حرف بالفعل خارج. (UPD: شكرا FluffyMan على الإشارة إلى الخطأ).

بناء جملة التعليقات الفاصلة صارم للغاية: لا يمكنك إضافة أو إضافة أي شيء إلى /*/ build ، وهذا سوف يدمر وظائفه. بناء الجملة من البداية ووقف التعليقات على العكس هو تعسفي تماما. يمكن أن يكون أضيق الحدود إلى /**/ ، أو يمكن أن يحتوي على أي تعليقات - قانونية بمعنى اللغة - تعليقات. من الواضح أن هناك حاجة ماسة إلى بدء وإيقاف التعليقات ، وأنه من المستحيل ببساطة استخدام تعليق قانوني مثل /* ... */ داخل الهيكل نفسه ، لأن ستصبح على الفور محطة لكامل التسلسل السابق لفواصل التعليق /*/ ، وبداية لسلسلة كاملة لاحقة منها. لكن الاستخدام المجدي لمثل هذه الإدخالات قد يكون مفيدًا.

التعليقات أحادية السطر // لا تؤثر على الوظيفة.

ديكسي :)

Source: https://habr.com/ru/post/ar434300/


All Articles