我將一些非常臨時的調試打印放入各種用戶空間程序中,以找出在嵌入式Linux設備上運行的代碼,並且我希望這些打印可以在不打開的情況下寫入文件。爲了使調試在各種程序之間更具可移植性,可以單獨打開一個文件,寫入並關閉它,而不必在其他地方定義函數/宏,這將是一件好事。我可以這樣做:fopen單線程,fprintf,fclose?
{ FILE *f = fopen("filename", "a"); if (f) { fprintf(f, "DEBUG MSG\n"); fclose(f); } else printf("File open error!\n"); }
這是剛剛從刪除空格:
{
FILE *f = fopen("filename", "a");
if (f) {
fprintf(f, "DEBUG MSG\n");
fclose(f);
}
else
printf("File open error!\n");
}
但這種感覺不必要的複雜性。有沒有更簡化的方法呢?同樣,我不是在說它是一個函數,因爲我希望它能夠在單獨的程序之間進行復制/粘貼,而不必每次都定義一個函數。它基本上是用戶空間的臨時printk等價物。
通常這些單行程被稱爲函數... – squiguy
單行在'在源代碼'中?最好使它成爲一個宏,所以你可以在以後輕鬆地禁用它。 – usr2564301
當然:把日誌記錄放到一個單獨的模塊中,儘早從'main'調用該模塊的「open」函數,在你結束程序和'log'函數之前調用''close'函數在任何你想寫入的地方日誌文件。 – Olaf