gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 22:33:46 25 4
gpt4 key购买 nike

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

#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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com