私はロギング/トレースユニットで作業しています(を入力しないでください。は既存のものを指していません。これは結果と同じくらいの経験です)。スタック上の匿名オブジェクト(C++)?
ランタイムコールスタックトレースを取得するには、最初にTraceObject
インスタンスを作成し、現在のクラスと関数の情報を含む関数を入力することをお勧めします。やや似て:
TraceObject to("MyClass", "myClassFunction");
スレッドごとのスタックにプッシュTraceObject
this
のコンストラクタ、デストラクタは再びそれをポップ。スタックはコールスタックのために問い合わせることができます。
私はこれを満足しています。しかし、小さなスニッヒがあります:オブジェクトto
。設計上、は決してという名前で呼ばれます。したがって、にはという名前があり、少なくともクライアントの識別子と衝突する可能性があります(または、接頭辞が_
の場合は実装)。
TL; DR
は、それがスタック上に匿名、非一時的なオブジェクトを作成することは可能です(関数が戻るまで生きるだろうつまり1が、識別子を持っていません)、はいの場合、どのようにして完了しますか?
私はそれは厳密に可能であると思ういけないが、マクロとあいまいな名前で、あなたは同じことを達成することができます。それが無名であることが必要な正当な理由があるのか、それとも本当に必要なものではないのでしょうか? –
@ KarthikT:はい、ラッパーマクロが一般的なアイデアでした。私は「不明瞭」をなくし、「不可視」を達成できるかどうか疑問に思っていました。 – DevSolar
@ Karthik T正確には、それがどのようにブーストログでそれを行うのですか?私の推測では、他の方法はありません – stijn