C/C++编译器的内置宏(预定义宏)

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都支持
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值