関数 がある場合、名前だけが異なるだけで、とまったく同じ機能を持つA()
関数を作成する便利な方法を見つけることに興味があります。新しい機能は 1 回限りの使用です。その意図は、やや原始的なサンプリング プロファイラーで同じ関数の呼び出しを区別することであり、複製された関数はこのコンテキストでのみ使用されます。つまり、本番コードに触れることはなく、いじくり回しにのみ使用されます。B()
A()
最初に推測されるのは、という名前の関数を宣言し、その内部B
へのインライン呼び出しを作成するマクロです。A()
ここでの問題は、インラインへの任意の関数呼び出しを強制する GCC のメソッドを認識していないことです。すべてのインライン化オプションは、呼び出しではなく関数宣言用のようです。
テンプレートを使用するか、コンパイラをだましてインライン化することによって、それを行う難解な方法があるかもしれません。可能かどうかわかりません。何かご意見は?残念ながら、違いがあるとしても、新しい C++ 標準は利用できません。