次のマクロのセット(文字列でコンパイル時定数__LINE__を使用するにはどうすればよいですか?)を定義し、マクロ'LOCATION_PREFIX'を使用して「キャプチャ」することができます。コード行の場所(ロギングを実行する他の関数に渡されます)。
#define STRINGIZE(f,l) STRINGIZE2(f) "(" STRINGIZE2(l)"):"
#define STRINGIZE2(x) #x
#define LOCATION_PREFIX STRINGIZE(__FILE__, __LINE__)
int main(){
printf("%s here\n", LOCATION_PREFIX);
printf("%s over here\n", LOCATION_PREFIX);
return 1;
}
出力:
"t.cpp"(8):ここ
"t.cpp"(9):ここ
出力を次のようにします。
t.cpp(8):ここ
t.cpp(9):ここ
どんな助けでも大歓迎です!