假设您的C ++编译器支持他们,是否有任何特定原因不是 使用__FILE__,,,,__LINE____FUNCTION__用于记录和调试目的?

我主要关注的是给用户误导性数据,例如,报告不正确的行号或功能,或结果受到性能命中。

基本上,我可以信任吗__FILE__,,,,__LINE____FUNCTION__总是做正确的事吗?

答案

__FUNCTION__是不标准的,__func__存在于C99 / C ++ 11中。其他 (__LINE____FILE__)很好。

它将始终报告正确的文件和行(如果您选择使用的话,并且功能__FUNCTION__/__func__)。优化是一个非因素,因为它是编译时宏扩展。它会never以任何方式影响性能。

来自: stackoverflow.com