繁体   English   中英

如何获取调用者的文件名和行号而不将其作为参数传递?

[英]How do I get the caller's file name and line number without passing them as parameters?

我有三个文件foo1foo2foo3

foo2foo3foo1调用一个函数。

我试图让foo1检测调用者的文件名和行号,而不将这些作为参数传递给函数。

我怎样才能做到这一点?

这是高度平台和编译器相关的,通常无法完成。 您的系统可能具有扩展功能,例如GNU backtrace功能。

在运行本机程序时,文件和行的概念不再适用。 该程序只是处理器的命令流 - 函数,变量,行号,文件名的名称,在编译期间都丢失了。

从程序中提取调试信息几乎是不可能的。 必须专门编译该程序以附加调试信息。 有时(如Visual C ++),调试信息被提取到一个单独的文件中 - 但您需要该文件并知道其格式,以提取该信息。 而你只会获得调试信息。 不是编译的代码。

参数是要走的路。

暂无
暂无

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

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