我有三个文件foo1
,foo2
和foo3
.
foo2
并foo3
调用foo1
.
我试图让 foo1 检测调用者的文件名和行号,而不将它们作为参数传递给函数。
我怎样才能做到这一点?
我有三个文件foo1
,foo2
和foo3
.
foo2
并foo3
调用foo1
.
我试图让 foo1 检测调用者的文件名和行号,而不将它们作为参数传递给函数。
我怎样才能做到这一点?
这高度依赖于平台和编译器,通常无法完成。您的系统可能具有扩展功能,例如 GNUbacktrace
功能。
在运行本机程序时,文件和行的概念不再适用。程序只是发往处理器的命令流——函数名、变量名、行号、文件名,在编译过程中都丢失了。
从程序中提取调试信息几乎是不可能的。该程序必须经过专门编译才能附加调试信息。有时(如 Visual C++),调试信息被提取到一个单独的文件中 - 但您需要该文件并知道其格式,才能提取该信息。你只会得到调试信息。不是编译后的代码。
参数是要走的路。