Kode komentar: hack kehidupan kecil

Terlepas dari kesederhanaan (dan, secara umum, hal-hal sepele, jika Anda memikirkannya) dari solusi yang dijelaskan, saya menemukan solusi itu murni secara kebetulan, sambil menghias dengan komentar program yang telah selesai, siap untuk dikirim.

Dalam praktik pemrograman, suatu situasi secara teratur terjadi ketika selama pengembangan dan debugging diperlukan untuk menghidupkan beberapa kode dan mematikan yang lain. Ini mudah dilakukan dengan konstruksi khusus seperti #if true ... #else ... #endif , mengubah true menjadi false , atau beralih ke kondisi yang lebih canggih. Namun, desain ini tidak memungkinkan pembuatan lebih dari dua bagian kode alternatif.

Dalam bahasa yang mendukung komentar seperti /* ... */ c, menggunakan konstruksi yang sedikit non-standar /**/ ... /*/ ... /*/ ... /**/ Anda dapat membuat bagian kode yang berubah-ubah secara sewenang-wenang yang secara bergantian akan hidup dan mati hanya dengan satu ruang di awal (mulai) dari komentar.

Sebagai contoh:

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

Saat dijalankan, kode ini akan menampilkan string "135" ke konsol. Artinya, semua operator output ganjil akan dieksekusi - dan yang terakhir, yang sudah di luar seluruh struktur. Tetapi jika Anda memasukkan spasi (atau, sebenarnya, karakter apa pun kecuali tanda bintang) di komentar awal antara tanda bintang kedua dan garis miring, maka kode yang sama akan menampilkan string "245" : hanya operator saja yang akan dieksekusi, dan, sekali lagi, yang terakhir, yang sudah di luar. (UPD: terima kasih FluffyMan telah menunjukkan kesalahannya).

Sintaks komentar separator sangat ketat: Anda tidak dapat menambahkan atau menambahkan apa pun ke /*/ construct, ini akan merusak fungsinya. Sintaks awal dan berhenti komentar sebaliknya benar-benar arbitrer. Ini bisa minimalis untuk /**/ , atau dapat berisi komentar - legal dalam arti bahasa -. Dari situ jelas bahwa komentar mulai dan hentikan sangat diperlukan, dan tidak mungkin menggunakan komentar legal seperti /* ... */ di dalam struktur itu sendiri, karena itu akan segera menjadi penghenti untuk seluruh urutan sebelumnya dari pemisah komentar /*/ , dan awal untuk seluruh urutan selanjutnya dari mereka. Tetapi penggunaan yang berarti dari sisipan semacam itu mungkin bermanfaat.

Komentar satu baris // tidak memengaruhi fungsionalitas.

Dixi :)

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


All Articles