C/C++ 使用 define 实现运行时函数是在哪个文件哪个函数被调用

1. 原始代码

cpp 复制代码
// demo2.h
#include <iostream>

void testFunc(int num)
{
    std::cout << num << std::endl;
}
cpp 复制代码
//main.cc
#include "demo2.h"

void func1()
{ }

void func2()
{
    testFunc(24);
}

int main()
{
    func1();
    func2();

    return 0;
}
  • 我现在需要知道 testFunc 是在哪一行被调用了。

2. 使用 define 实现

cpp 复制代码
#include <iostream>

#define testFunc(num) __testFunc(num, __FILE__, __FUNCTION__, __LINE__)

void __testFunc(int num, const char* fileName, const char* funcName, int line)
{
    std::cout << fileName << std::endl;
    std::cout << funcName << "()" << std::endl;
    std::cout << "line: " << line << std::endl;
    std::cout << num << std::endl;
}
  • 主函数一样
cpp 复制代码
#include "demo2.h"

void func1()
{ }

void func2()
{
    testFunc(24);
}

int main()
{
    func1();
    func2();
    return 0;
}
如此就实现了打印函数在娜个文件、哪个函数哪一行被调用的效果

作为 debug 的时候很有用。

相关推荐
跨境数据猎手39 分钟前
反向海淘实战|独立站搭建+国内电商API对接
开发语言·爬虫·架构
没钥匙的锁11 小时前
05-Java面向对象构造器与封装
java·开发语言
仙人球部落1 小时前
-python-LangGraph框架(3-31-LangGraph 「合并式状态管理」的原理与实践)
开发语言·javascript·python
2401_894915531 小时前
Geo搜索优化排名源码部署搭建全流程详解
android·开发语言·flask·php·精选
aaPIXa6222 小时前
C++采样引导优化SPGO——比PGO更智能的编译器决策新方案
java·c++·人工智能
chouchuang2 小时前
day-025-面向对象-上
开发语言·python
Starmoon_dhw2 小时前
题解:P17078 夏日甜点
c++·学习·算法·图论
某不知名網友2 小时前
C/C++动态内存管理,智能指针及RAlI思想。
java·c语言·c++
sunfdf2 小时前
Next.js 新手从零部署到首跑实战指南
开发语言·javascript·ecmascript
一杯奶茶¥3 小时前
c语言程序设计大学期末考试考研知识点重点笔记题库复习资料C语言重点考点题库资料合集
c语言·笔记·考研·c语言程序设计·c语言笔记