__FILF__
宏
__FILE__
宏用于检查当前文件名
#include <cstdio>
using namespace std;
int main() {
printf("%s\n", __FILE__);
return 0;
}
__FUNCTION__
宏、 __func__
宏
__FUNCTION__
宏输出当前函数名
#include <cstdio>
using namespace std;
void foo() {
printf("%s\n", __FUNCTION__); // 输出foo
}
void bar() {
printf("%s\n", __FUNCTION__); // 输出bar
}
int main() {
foo();
bar();
printf("%s\n", __FUNCTION__); // 输出main
return 0;
}
C++11中允许它们用在类或者结构体中:
#include <iostream>
struct TestStruct{
TestStruct() : name(__FUNCTION__ ) {
}
const char *name;
};
int main() {
TestStruct ts;
printf("%s\n", ts.name);
return 0;
}
但是不允许作为函数参数的默认值:
#include <string>
#include <iostream>
void FuncFail(const std::string& func_name = __func__){
printf("%s", func_name.c_str()); // 实际上什么也不会打印
};
这是由于在参数声明时,__func__
还没有定义。
__FUNCTION__
和__func__
功能一样
__LINE__
宏
输出当前代码是该文件中的第几行
#include <cstdio>
using namespace std;
void foo() {
printf("%d\n", __LINE__); // 输出5
}
void bar() {
printf("%d\n", __LINE__); // 输出9
}
int main() {
foo();
bar();
printf("%d\n", __LINE__); // 输出15
return 0;
}
总结
联合这三个宏,我们输出调试信息时就可以快速定位错误发生的位置啦。
printf("%s:%d[%s] Error: xxxx\n", __FILE__, __LINE__, __FUNCTION__);
今天的文章c++file用法_function c++分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86175.html