繁体   English   中英

如何获得特定构造函数的调用者?

[英]How to get caller of a specific constructor?

我知道用宏包装可以用于获取函数的调用者。 但是就构造函数而言,据我所知这是不可能的。 我没有使用gcc,所以backtrace()函数对我来说不是一个选择。

编辑:我正在使用msvc。

一个理想的工具是调试器,它不需要您对程序进行任何修改。

但是,如果您确实希望在程序中本地获取调用者,这也是可能的-但在不使用平台特定或包装器库的情况下,在标准C ++中是不可能的(除非通过修改构造函数和使用宏技巧)。


我没有使用gcc,所以backtrace()函数对我来说不是一个选择。

然后,您将需要确定正在使用哪个编译器,并使用它们为堆栈展开提供的任何替代方法。

您可以使用一个可移植的库libunwind,它可以在不访问backtrace的情况下工作。 但是,它似乎没有移植到Windows。


我知道用宏包装可以用于获取函数的调用者

包装初始化应该以类似的方式进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM