C/C++提供了三个宏__FUNCTION__,__FILE__和__LINE__来定位程序运行时的错误。程序预编译时预编译器将用所在的函数名,文件名和行号替换。当运行时错误产生后这三个宏分别能返回错误所在的函数,所在的文件名和所在的行号。
示例代码
//mian.cpp
#include"test1.h"
int main()
{
log_print;
test1();
cout<<"Hello C++."<<endl;
log_print;
return 0;
}
//test1.h
#include<iostream>
using namespace std;
#define log_print printf("file:%s, function:%s, line:%s\n",__FILE__,__FUNCTION__,__LINE__)
void test1()
{
log_print;
cout<<"welcome to the game."<<endl;
}
结果输出
file:/xxx/xxx/main.cpp, function:mian, line:6
file:/xxx/xxx/test1.h, function:test1, line:10
welcome to the game
Hello C++
file:/xxx/xxx/main.cpp, function:mian, line:9