假设您的 C++ 编译器支持它们,是否有任何特别的理由 不 使用__FILE__,__LINE__以及__FUNCTION__用于日志记录和调试目的?
__FILE__
__LINE__
__FUNCTION__
我主要关心向用户提供误导性数据——例如,报告不正确的行号或函数作为优化的结果——从而导致性能下降。
__FILE__基本上,我可以信任__LINE__并 始终__FUNCTION__做正确的事吗? __
__FUNCTION__是非标准的,__func__存在于 C99 / C++11 中。其他(__LINE__和__FILE__)都很好。
__func__
它总是会报告正确的文件和行(如果您选择使用__FUNCTION__/ ,它会报告功能__func__)。优化不是因素,因为它是编译时宏扩展;它 永远不会 以任何方式影响性能。