Если __ FIL E__ и __ LINE __ являются параметрами рекурсивной функции, существует ли способ сохранить значения __ FILE __ и __ LINE __ одинаково во всех рекурсиях функции. Из моих собственных попыток вы не можете strcpy имя файла. Кроме того, после первой рекурсии __ 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;
}
в 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.cpp'' находились во всех вызовах, написанных как только вы считаете, что вы не видите, что я вижу, это 'const' для' char * '. Если вы хотите, чтобы * first * one был из 'main.cpp' и после того, как был из файла' test() 'is in, рекурсивный вызов должен также использовать' __FILE__' и '__LINE__'. (Т.е. don 'переслать параметры 'filename' и' line'). И остановите файлы '# include'-ing .c/.cpp. его плохая привычка. – WhozCraig
Поскольку '__LINE__' и' __FILE__' разрешены только один раз, во время предварительной обработки они будут только * появляться * один раз в вашей «рекурсивной» функции. В вашей формулировке вы полагаете, что они появятся многократно, «столько раз, сколько« рекурсивный »называется». – usr2564301