c++编译器和预处理器定义了一些宏可以帮助我们更快的找到程序出错的地方。有如下几个宏:

__FILE__表示当前文件

__func__表示当前函数(c++11)

__LINE__表示当前行数

__DATE__表示编译的日期

__TIME__表示编译的时间


根据以上信息可以很容易找到程序出错的位置。可以把以上信息写在一个宏里,这样就不用在每个可能出错的位置都敲这些宏了。


举个例子:

image.png

定义一个宏DEBUG_ERR_POS,宏的作用就是把那些宏整合在一起打印出来,qWarning()是Qt中用于输出警告信息的。


image.png

在Widget构造函数中使用DEBUG_ERR_POS,程序运行输出如下信息:


image.png

程序正确打印出了DEBUG_ERR_POS所在位置的信息。


注:不要使用函数进行封装以上信息,不然每次打印的都是函数里代码的位置信息,而不是调用它的位置信息。