是否可以在没有宏的帮助下确定调用某个功能的线路号?确定没有宏的呼叫线路
考虑以下代码:
#include <iostream>
#define PrintLineWithMacro() \
std::cout << "Line: " << __LINE__ << std::endl; // Line 4
void PrintLine()
{
std::cout << "Line: " << __LINE__ << std::endl; // Line 8
}
int main(int argc, char **argv)
{
PrintLine(); // Line 13
PrintLineWithMacro(); // Line 14
return 0;
}
其输出以下:
Line: 8
Line: 14
我明白为什么每个打印他们做什么。如果可以在不使用宏的情况下模仿宏功能,我更感兴趣。
获得该行的唯一方法是使用'__LINE__';你必须在某处使用预处理器。 (换句话说,预处理器处理原始*代码*,并且行号是原始*代码*的一部分。) – GManNickG 2010-10-27 01:20:37