Ich verwende einige sehr temporäre Debug-Ausdrucke in verschiedenen Userspace-Programmen, um herauszufinden, welcher Code auf einem eingebetteten Linux-Gerät ausgeführt wird, und ich möchte, dass diese Drucke in eine Datei schreiben, ohne sie offen zu lassen. Um das Debugging portabler zwischen den verschiedenen Programmen zu machen, wäre es schön, einen Einzeiler zu haben, der eine Datei öffnen, schreiben und schließen kann, ohne eine Funktion/Makro anderswo definieren zu müssen. Ich könnte so etwas wie:Einliner für fopen, fprintf, fclose?
{ FILE *f = fopen("filename", "a"); if (f) { fprintf(f, "DEBUG MSG\n"); fclose(f); } else printf("File open error!\n"); }
, die nur Leerzeichen ist das Entfernen von:
{
FILE *f = fopen("filename", "a");
if (f) {
fprintf(f, "DEBUG MSG\n");
fclose(f);
}
else
printf("File open error!\n");
}
Aber das fühlt sich unnötig komplex. Gibt es einen vereinfachten Weg, dies zu tun? Auch hier geht es nicht um eine Funktion, da ich es gerne zwischen verschiedenen Programmen kopieren/einfügen würde, ohne jedes Mal eine Funktion zu definieren. Es ist nur ein temporäres printk-Äquivalent für den Benutzerbereich.
Normalerweise werden diese Einzeiler Funktionen genannt ... – squiguy
Eine Zeile wie in 'im Quellcode'? Am besten machen Sie es zu einem Makro, so dass Sie es später leicht deaktivieren können. – usr2564301
Sicher: Legen Sie den Logging - Kram in ein separates Modul, rufen Sie die "open" -Funktion des Moduls früh von 'main',' close' kurz bevor Sie Ihr Programm beenden und die 'log' - Funktion wo immer Sie schreiben wollen Logdatei. – Olaf