Was würde ich ist haben möchte etwas wie folgt aus:Holen Sie sich das Mutter-Funktion __FILE__
./client.out:functionC.c:78: Fehler blabla < --- Hier ist mein Problem
./client.out:client.c:98: Fehler blabla
Hier sind meine Beispielfunktionen
/* client.c */
int main(int argc, char *argv[]) {
if(functionCalled() == -1){
fprintf(stderr, "%s:%s:%d: Error blabla\n", argv[0], __FILE__, __LINE__);
}
return 0;
}
/* functionC.c */
int functionCalled(){
fprintf(stderr, "%s:%s:%d: Error blabla\n", ?????, __FILE__, __LINE__);
return -1;
}
Offensichtlich kann ich den main.c
Namen über die Parameter nicht senden. Denken Sie, dass es möglich ist, das Mutterprogramm zu bekommen, das die Funktion aufruft? Ich habe einen Client und einen Server, der dieselbe Funktion aufruft, aber im Falle eines Fehlers muss ich wissen, welches Programm (Client oder Server) abgestürzt ist.
ANTWORT:
Verwendung: extern char *progName;
im functionC.c und char *progName;
in client.c
Ich möchte nicht die Funktion erhalten, die das Problem verursacht hat, aber die 'mainProgram.out: program.c: line' – Hearner
Warum können Sie nicht Argv [0] an Ihre Funktion übergeben? Es ist eine Variable wie jede andere –
@ Jean-FrançoisFabre Ich versuchte Ihre __PRETTY_FUNCTION__ und die Antwort, die Sie gaben, aber es gibt nicht zurück, was ich brauchte. Ich habe meinen Beitrag bearbeitet Sie verstehen – Hearner