__FILE__宏用于检查当前文件名,例如:
#includeusing namespace std; int main() { printf("%sn", __FILE__); return 0; }
假如这段代码保存为a.cc,就会输出a.cc。这在大项目多文件时调试时很有用。
__FUNCTION__宏__FUNCTION__宏输出当前函数名,例如:
#includeusing namespace std; void foo() { printf("%sn", __FUNCTION__); // 输出foo } void bar() { printf("%sn", __FUNCTION__); // 输出bar } int main() { foo(); bar(); printf("%sn", __FUNCTION__); // 输出main return 0; }
可以帮助我们快速定位错误发生的位置。
__LINE__宏__LINE__宏输出当前代码是该文件中的第几行,例如:
#include总结using namespace std; void foo() { printf("%dn", __LINE__); // 输出5 } void bar() { printf("%dn", __LINE__); // 输出9 } int main() { foo(); bar(); printf("%dn", __LINE__); // 输出15 return 0; }
联合这三个宏,我们输出调试信息时就可以快速定位错误发生的位置啦。
printf("%s:%d[%s] Error: xxxxn", __FILE__, __LINE__, __FUNCTION__);



