假设您的C++编译器支持它们,是否有任何特殊原因不使用__FILE__,__LINE__以及__FUNCTION__用于记录和调试目的?
我主要关注的是为用户提供误导性数据 - 例如,由于优化而报告错误的行号或功能,或者因此导致性能下降.
基本上,我可以信任__FILE__,__LINE__并__FUNCTION__以永远做正确的事?
我有一个宏将行号和文件名传递给错误处理程序:
#define SYSTEM_FAILURE (error_code, comment) \
System_Failure((error_code), (comment), __LINE__, __FILE__);
Run Code Online (Sandbox Code Playgroud)
__LINE__在内联函数中使用时如何解决?
file.h:
inline int divide(int x, int y)
{
if (y == 0)
{
SYSTEM_FAILURE(ENUM_DIVIDE_BY_ZERO, "divide by zero error");
}
return x/y;
}
Run Code Online (Sandbox Code Playgroud)
将__LINE__包含头文件中的行号,或调用内联函数的源文件的行号(假设编译器在源代码中执行"粘贴")?