You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义print_name实现C++函数引用参数名的自动打印

C++ print_name 实现方案

C++ 运行时没有原生反射能力直接获取调用时传入的变量名,最符合需求的实现方式是借助C预处理器的字符串化运算符(#) 定义宏,不需要在调用时显式手写参数名字符串。

完整代码实现

#include <iostream>

// 定义print_name宏,用do-while(0)包裹保证多场景下语法安全
#define print_name(var) \
do { \
    std::cout << "name: " #var << '\n'; \
} while(0)

void func(const int& A){
    print_name(A);
}

// 测试用例
int main() {
    int A = 20;
    func(A); // 输出目标内容 name: A
    return 0;
}

实现原理

  • 预处理器的#运算符会将宏的输入参数原样转换为字符串字面量,当调用print_name(A)时,预编译阶段会自动把代码展开为:
    do { std::cout << "name: " "A" << '\n'; } while(0);
    
  • C++ 中相邻的字符串字面量会自动拼接,最终运行时就会输出目标内容。

内容的提问来源于stack exchange,提问作者Alejandro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:27:02