コードからコメント:小さなライフハック

説明されたソリューションの単純さ(そして、一般的には些細なことですが)にも関わらず、完成したプログラムにコメントを付けて配信の準備をしている間に、偶然それを偶然見つけました。



プログラミングの実践では、開発およびデバッグ中に一部のコードをオンにし、別のコードをオフにする必要がある場合に、状況が定期的に発生します。 これは、 #if true ... #else ... #endif



ような特別な構造を使用して簡単に実行でき、 true



からfalse



に変更したり、より洗練された条件に頼ったりできます。 ただし、この設計では、2つを超えるコードの代替セクションを作成できません。



/* ... */



cのようなコメントをサポートする言語では、やや非標準の構造/**/ ... /*/ ... /*/ ... /**/



を使用して、コードの代替セクションをいくつでも作成できます。コメントの最初(開始)にスペースを1つだけ入れて、交互にオンとオフを切り替えます。



例:



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





このコードを実行すると、文字列"135"



がコンソールに出力されます。 つまり、すべての奇数の出力演算子が実行されます。最後の演算子は、すでに構造全体の外側にあります。 しかし、2番目のアスタリスクとスラッシュの間の開始コメントにスペース(または厳密に言えば、アスタリスクを除く任意の文字)を挿入すると、同じコードはストリング"245"



を表示します"245"



偶数の演算子のみが実行され、最後のすでに外。 (UPD:エラーを指摘してくれたFluffyManに感謝します)。



区切りコメントの構文は非常に厳密です/*/



構造に追加または追加することはできません。これにより、その機能が破壊されます。 逆に、開始コメントと停止コメントの構文は完全に任意です。 /**/



最小限にすることも、言語の意味で合法なコメントを含めることもできます。 これにより、コメントの開始と停止が厳密に必要であり、構造自体の内部で/* ... */



ような正当なコメントを使用することは単に不可能であることが明確になり/* ... */



コメント区切り文字/*/



前のシーケンス全体の停止、および後続のシーケンス全体の開始になります。 しかし、そのような挿入の意味のある使用は有用かもしれません。



単一行コメント//



機能に影響しません。



ディクシー:)



All Articles