【发布时间】:2012-06-26 19:03:33
【问题描述】:
我有一个将行号和文件名传递给错误处理程序的宏:
#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、内联函数和宏。
-
@Thomas,在您自己的编译器上对此进行测试并将结果包含在您的问题中(从而使其更像
my preprocessor does this, is it standard?)将会(并且仍然可以)中性许多反对票。
标签: c++ c line inline c-preprocessor