現実世界のプログラミングにおけるマクロ乱用の落とし穴
マクロとプリプロセッサは C プログラミングで重要な役割を果たし、次のような機能を提供します。テキスト置換を定義し、コード生成を実行します。ただし、マクロの最悪の悪用を示す実際の例で証明されているように、その過度の使用は多くの課題を引き起こす可能性があります。
プログラマーが、メモリに制約のあるシステムに関するこれまでの経験から、型破りなアプローチに頼っていました。この個人は、RETURN という名前のマクロを次のように定義しました:
#define RETURN(result) return (result);}
このマクロは、閉じ中括弧なしでいくつかの関数を定義するために使用され、結果として次のようなコードベース:
int myfunction1(args) { int x = 0; // do something RETURN(x) int myfunction2(args) { int y = 0; // do something RETURN(y) int myfunction3(args) { int z = 0; // do something RETURN(z) }
この極端なマクロの悪用により、構文の強調表示が著しく損なわれ、関数とコード ブロックを視覚的に区別することが不可能になります。このプログラマーがこのアプローチを正当化したのは、バイトの節約が最重要であるというアセンブリ言語の作業中に磨かれた、深く根付いた考え方に由来しています。
この人物に関連する他の奇行は、極端なプログラミング手法の潜在的な結果をさらに浮き彫りにしました。モニターの上に戦略的に配置された凸面鏡は、傍観者の存在を検出するための基本的な監視システムとして機能しました。さらに、コンパイラーがコード内にエラーを検出したときは常に、自己罰として椅子から突然立ち去り、続いて簡単な腕立て伏せを行うことが使用されていました。
この例は、過度の危険性についての警告として機能します。マクロの悪用。マクロは特定のシナリオで一定の利点を提供しますが、無差別に使用すると、コードベースの読み取り、保守、デバッグが困難になる可能性があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3