C/C++编译器提供了多个类似的内置标识符:
| 标识符 | 含义 | 标准 | 示例输出 |
|---|---|---|---|
__func__ | 当前函数名 | C99/C++11 | "main" |
__FUNCTION__ | 当前函数名 | 扩展(非标准) | "main" |
__PRETTY_FUNCTION__ | 详细函数签名 | GNU扩展 | "int main(int, char**)" |
__LINE__ | 当前行号 | 标准 | 25 |
__FILE__ | 当前文件名 | 标准 | "main.c" |
__DATE__ | 编译日期 | 标准 | "Feb 26 2024" |
__TIME__ | 编译时间 | 标准 | "14:30:25" |
使用示例:
#include <stdio.h>
void test_function(void) {
printf("当前函数: %s\n", __FUNCTION__);
printf("当前文件: %s\n", __FILE__);
printf("当前行号: %d\n", __LINE__);
}
int main(void) {
printf("程序开始...\n");
test_function();
return 0;
}
程序开始...
当前函数: test_function
当前文件: main.c
当前行号: 7
__FUNCTION__ 和 __func__ 的区别
// __func__ 是C99/C++11标准
void func1(void) {
printf("%s\n", __func__); // 标准写法
}
// __FUNCTION__ 是非标准扩展(但广泛支持)
void func2(void) {
printf("%s\n", __FUNCTION__); // GNU/Clang/MSVC都支持
}
&spm=1001.2101.3001.5002&articleId=157869109&d=1&t=3&u=250c7da6b70e42218872c65b31bf7280)
829

被折叠的 条评论
为什么被折叠?



