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

news/2024/12/23 7:20:47/

1. 原始代码

// demo2.h
#include <iostream>void testFunc(int num)
{std::cout << num << std::endl;
}
//main.cc
#include "demo2.h"void func1()
{ }void func2()
{testFunc(24);
}int main()
{func1();func2();return 0;
}
  • 我现在需要知道 testFunc 是在哪一行被调用了。

2. 使用 define 实现

#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;
}
  • 主函数一样
#include "demo2.h"void func1()
{ }void func2()
{testFunc(24);
}int main()
{func1();func2();return 0;
}
如此就实现了打印函数在娜个文件、哪个函数哪一行被调用的效果

作为 debug 的时候很有用。


http://www.ppmy.cn/news/924052.html

相关文章

618数码产品怎么选?数码好物选购清单分享

618作为年中最为重要的电商购物节&#xff0c;眼看着已经进入到大促最为关键的几天&#xff0c;各大品牌也纷纷开始了最后的冲刺&#xff0c;各种福利、优惠是接连不断&#xff0c;而此时也正是消费者购买数码产品合适的时候&#xff0c;那么在618期间该如何挑选一款优质且适合…

Redis学习(四)Redis原理:底层数据结构、网络模型、内存回收策略

文章目录 Redis底层数据结构SDS 动态字符串IntSet 整数集合Dict 字典Dict伸缩中的渐进式再哈希 ZipList 压缩列表QuickLisk 快速列表SkipList 跳表动态索引建立 RedisObject变量类型与数据结构实现StringListSetZSetHash Redis网络模型Redis是单线程还是多线程&#xff1f;为什…

Redis进阶底层原理-主从复制

Redis的主从节点都会记录对方的信息&#xff0c;核心还包括ReplicationID 和 offset &#xff0c; ReplicationID &#xff1a; 主从节点实例的ID &#xff0c;redis内部就是通过这个id去识别主从节点。offset&#xff1a;数据同步偏移量&#xff0c;也就是从节点每次从主节点同…

IOS .pch 文件详解

在IOS开发的项目中有一个XX_Prefix.pch XX_Prefix.pch:扩展名.pch表示"precompiled header",这是一个你工程要用到的来自于外部框架的头文件列表。xcode将编译这些头到文件&#xff0c;这将减少你在选择Build 或Build and Go时编译项目的时间。通常用到的头文件已经自…

iOS h264 硬解码

转自&#xff1a;http://www.zhihu.com/question/20692215/answer/48529118 iOS 系统中&#xff0c;H.264 视频流可以硬件解码吗&#xff1f; 具体如何实现&#xff1f; 添加评论 • 邀请回答 查看全部 14 个回答 bbcallen&#xff0c; ijkplayer 林坚升、李者璈、Wayne Wang …

XCode4.3.3/4.2/4.3 + iOS5.1 无证书开发 、真机调试、生成IPA

环境&#xff1a; Mac OS X 10.7.4XCode4.3.3 iPad3 特别说明: Xcode4.3.2 &#xff0c; Xcode4.3.3 都是免安装的&#xff0c;打开dmg后&#xff0c;只有一个Xcode.app文件。安装方法是直接将Xcode.app拖放到“应用程序”(Applications)的目录即可使用。安装后没有Develop…

苹果停止签署 iOS 14.6 验证

继上周发布 iOS 14.7 以后&#xff0c;苹果公司已正式停止签署 iOS 14.6。这也就意味着如果你已经安装 iOS 14.7 或 iOS 14.7.1&#xff0c;就无法降级到 iOS 14.6。 苹果这样的操作已不是一次两次了&#xff0c;发布高版本后&#xff0c;停止签署旧版本&#xff0c;从而鼓励…

[iOS] Xcode 4透過Ad-Hoc發佈App給其它裝置測試使用

先前曾分享過&#xff0c;透過憑證的設定&#xff0c;將Xcode開發好的App&#xff0c;同步到開發者行動裝置中&#xff0c;來進行除錯與測試&#xff0c;但由於一般的開發者&#xff0c;很難手邊同時有iPhone 3Gs、iPod Touch、iPhone 4、4s...等&#xff0c;這時就得靠平常的生…