c++ - 内联函数中 __LINE__ 的行为

标签 c++ c line inline c-preprocessor

我有一个将行号和文件名传递给错误处理程序的宏:

#define SYSTEM_FAILURE (error_code, comment) \
   System_Failure((error_code), (comment), __LINE__, __FILE__);

__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;
}

__LINE__ 是否会包含头文件中的行号,或调用内联函数的源文件的行号(假设编译器在源代码中“粘贴”)?

最佳答案

在 C 和 C++ 中,宏(在大多数情况下)不会根据实际代码的任何知识进行评估,而是在代码之前处理(因此称为“预处理器”)。因此,__FILE__ 将评估为“file.h”,而 __LINE__ 将评估为与 SYSTEM_FAILURE 出现的行对应的行号文件.h。

关于c++ - 内联函数中 __LINE__ 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11214260/

相关文章:

c++ - 当 QMainWindow 最大化时,QDockWidget::restoreGeometry 无法正常工作

c++ - "Not All Control Paths Return a Value"

c - 为什么当我们包含 "krb5.h"时 krb5 函数无法解析?

c++ - CreateThread 与 PsCreateSystemThread - 有什么区别?

c - "Syntax error, multiple markers at this line"?

actionscript-3 - AS3 更改现有行的 lineStyle

java - 如何缩放给定的坐标以在窗口中正确显示它们?

c++ - 如何在 C++ 中编辑文本文件中的第一行?

c++ - bool 数组获取意外的默认值

c++ - 为什么我不能使用与 'const int*' 相同的 'const char*' 创建一个 int 数组?