在C++中尝试封装为函数

尝试封装为函数

我们以函数默认参数的形式来进行封装,可以写出形如下面的代码:

复制代码
#include <iostream>
#include <string>

void debug_log(const std::string& msg
               , const char* const file = __FILE__
               , const char* const fun  = __func__
               , const int         line = __LINE__
               ) {
    printf("Debug:[File:%s][Fun:%s][Line:%d] %s", file, fun, line, msg.c_str());
}

int main() {
    debug_log("use debug log\n");
}

将这段代码在各种编译其中尝试会因为 const char* const fun = func 产生各种七七八八的错误都会出现:

  • 直接无法编译
  • 编译运行成功,但是会报警告
  • 运行打印垃圾数据
  • 运行打印空串

原因主要在于 warning: 'func' is not defined outside of function scope。也就是说 func 仅在函数体内可用。

并且 LINE 所替换成的常量也是在函数的参数位置的行号。

因此这种方式无法满足我们的需求。

相关推荐
threerocks9 分钟前
Jev 入门第一课
算法
汉克老师1 小时前
GESP2026年9月认证C++三级( 第三部分编程题(2、分割字符串))精讲
c++·gesp·小学生·学c++编程
估值探索者1 小时前
【Python量化系统工程化 #08】关了 SSH 就停?systemd 让脚本开机自启 + 异常自动拉起
java·c++·人工智能·分类·数据挖掘
西柚研究生1234561 小时前
论文分析17:YOLOv11_UAVNet:无人机航拍图像专用目标检测算法
人工智能·python·深度学习·算法·目标检测
RAN11426760081 小时前
1.3第一个程序的介绍
开发语言·qt
天若有情6731 小时前
C++花式魔改!手写头文件复刻Java语法,彻底打破编码思维定式
java·c++·语言做语言·jac++
qq_199886872 小时前
第7板块·第3节:CUTLASS 的 GEMM 实现与优化策略
c++·人工智能·gpu算力·cuda
hetao17338372 小时前
2026-09-17 hetao1733837 的刷题记录
c++·算法
blue_ice .2 小时前
Verilog DDS 数字信号发生器:DAC 输出模拟波形与 ADC 回采观测
开发语言·单片机·嵌入式硬件·fpga开发
远翔调光芯片^138287988722 小时前
ECP5702能芯科技PD取电芯片在市场上的优势有哪些?
开发语言·人工智能·单片机·嵌入式硬件·智能家居