C マクロにはどのような利点がありますか?
その安全性とより安全な代替手段の存在に対する懸念により、C 開発者は主にプリプロセッサを避けてきました。マクロ。ただし、これらは特定の目的に役立ちます。
マクロの有益な使用例
マクロはデバッグ関数のラッパーとして優れており、ファイルや行などの情報を自動的に渡すことができます。番号:
#ifdef ( DEBUG ) #define M_DebugLog( msg ) std::cout << __FILE__ << ":" << __LINE__ << ": " << msg #else #define M_DebugLog( msg ) #endif
なしの代替案マクロ
C 20 以降、std::source_location 型は __LINE__ と __FILE__ を置き換えることができ、マクロ以外の同等の実装が可能になります。
template< class... Args> void M_DebugLog( Args&&... args) { std::cout << std::source_location::current() << ": "; std::cout << std::forward<Args>(args)...; }
したがって、マクロはC 20 はプリプロセッサを回避するより現代的なアプローチを提供しますが、デバッグ機能を強化する便利な方法です。信頼。
以上がC マクロがデバッグに依然として有益なのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。