如果__ FIL E__和__ LINE __是递归函数的参数,则有没有办法在函数的所有递归中使__ FILE __和__ LINE __的值相同。从我自己的尝试来看,您无法隐藏文件名。同样,在第一次递归之后,__ FILE __和__ LINE __更改为递归函数出现的文件和行号。

例如,在main.c中

#include <stdio.h>
#include <stdlib.h>
#include "recurse.c"

int main(int argc, char* argv[]){
    recurse(2);
    return 0;
}


递归地

#define recurse( x ) test( x,__FILE__,__LINE__ )

void test(int num, char* filename, int line){
    if(num > 0)
        test(num - 1, filename, line);
    }
}


我希望文件名和行与main中的函数调用相对应,而不与递归中的函数调用相对应,但是这样做似乎不太可能。我什至不认为有可能,但也许我错过了一些东西。

我想弄清楚这不是我正在使用的代码,我只是在现场提出来详细说明我的问题,所以如果有任何重大错误我深表歉意。它不应该做任何事情,只是帮助解释我的问题。

最佳答案

这不起作用,因为__FILE____LINE__recurse本身替代。您应该直接从test调用main

test(2, __FILE__, __LINE__);

关于c - 在递归函数中使用__FILE__和__LINE__,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20435262/

10-12 06:32