私のC++テストコードには単純なデリゲート関数があります。元の実装の.cppファイル(組み込みのもの)を含めることはできないので、PCで実行されているテストでdelegate .cppファイルを使用します。私の考えは、シグネチャに従って提供される括弧()と引数を除いて、実装のボディとして同じマクロを単純に使用することです。マクロ値としてのC++名前空間
私はのようなものを試してみました:
void Flash::init()
{
DELEGATE_DESTINATION();
}
bool Flash::write(args)
{
DELEGATE_DESTINATION(args);
}
bool Flash::read(args)
{
DELEGATE_DESTINATION(args);
}
void Flash::init()
bool Flash::write(args)
bool Flash::read(args)
は、埋め込まれたプロジェクト実施のものでものと同じです。テストファイルでは、単に呼び出しを偽の実装に中継します。 1つの可能な解決策は、中継を使用しない偽のクラスに既にシグネチャと実装を含めることです。
マクロを把握するのに苦労しています。まあ、その後C Preprocessor, Stringify the result of a macro を経た後に、私は場所に拡大するだけ偽物を得ることができます
FAKE_PREFIX__FUNCTION__ に展開#define FAKE_PREFIX fakes::device::Flash::
#define DELEGATE_DESTINATION FAKE_PREFIX##__FUNCTION__
:私のようなものを試してみました。
私の目標は、その上のがを読み、はを書くため
fakes::device::Flash::init
などの結果を持っていることであろう。
インラインネームスペースを使用することができます。 –
@GuillaumeRacicotあなたが気にしていることの例を教えてください。私はそれを試してみましたが、簡潔な結果は得られませんでした...ありがとう。 – arapEST
私は好きですが、残念ながらインラインネームスペースでの私の経験は限られています。ネストされた名前空間を「デフォルト」にするためにここにいることはわかっています。 –