假设您的C ++编译器支持他们,是否有任何特定原因不是 使用__FILE__
,,,,__LINE__
和__FUNCTION__
用于记录和调试目的?
我主要关注的是给用户误导性数据,例如,报告不正确的行号或功能,或结果受到性能命中。
基本上,我可以信任吗__FILE__
,,,,__LINE__
和__FUNCTION__
到总是做正确的事吗?
答案
__FUNCTION__
是不标准的,__func__
存在于C99 / C ++ 11中。其他 (__LINE__
和__FILE__
)很好。
它将始终报告正确的文件和行(如果您选择使用的话,并且功能__FUNCTION__
/__func__
)。优化是一个非因素,因为它是编译时宏扩展。它会never以任何方式影响性能。