如果__ FIL E__和__ LINE __是递归函数的参数,是否有任何方法可以在函数的所有递归中保持__ FILE __和__ LINE __的值相同。根据我自己的尝试,你不能strcpy文件名。此外,在第一次递归之后,__ FILE __和__ LINE __更改为递归函数出现的文件和行号。
例如,在main.c
中#include <stdio.h>
#include <stdlib.h>
#include "recurse.c"
int main(int argc, char* argv[]){
recurse(2);
return 0;
}
在recurse.c中
#define recurse( x ) test( x,__FILE__,__LINE__ )
void test(int num, char* filename, int line){
if(num > 0)
test(num - 1, filename, line);
}
}
我希望文件名和行与main中的函数调用相对应,而不是递归中的函数调用,但这样做是不可能的。我甚至认为这不可能,但也许我错过了一些东西。
我想说清楚这不是我正在使用的代码,我只是在现场详细说明我的问题所以如果有任何重大错误我道歉。它不应该做任何事情,只是帮助解释我的问题。
答案 0 :(得分:1)
这不起作用,因为__FILE__
和__LINE__
在recurse
本身中被替换。您应该直接从test
致电main
:
test(2, __FILE__, __LINE__);