LINEマクロを介して報告されたオンラインの文字列全体を取得することは可能ですか? サンプルコード:
#include <stdio.h>
#define LOG(lvl) pLog(lvl, __LINE__, __FILE__)
pLog(const char *str, int line, const char *file)
{
printf("Line [%u]: File [%s]", line, file);
}
int main ()
{
LOG("Hello"
"world");
return 0;
}
出力は次のとおりです。 行 [13]: ファイル [macro.c]
今、大規模なコードベースで、このファイルを検索し、報告された行にある文字列「Hello world」を出力したいと考えています(この場合は13です)
私が考えていた1つの方法は、最初にこのファイルを検索して出力ファイルを生成することです gcc -E do grep for pLog を実行し、それらの文字列を保存してから、実際のコードファイルに LOG をgrepし、行番号と一致する行番号を保存しますその結果、インデックスの照合を行い、文字列を出力します。
文字列は複数の行に分散できるため (コードでは、Hello が 1 行にあり、world が別の行にあるように)、それにも注意する必要があります。
それを行うための最良かつ高速な方法は他にありますか、またはgccは行とファイルを実際のコードに変換するオプションを提供します