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中文网其他相关文章!