-1

関数呼び出しには異なる名前を付ける必要がありますが、実行中はすべて同じ定義を参照する必要があります。たとえば、次のような関数呼び出しがあります

UINT8 vsignal;UINT8 vsignal1;void Read_Message1_Signal1(&vSignal);void Read_Message2_Signal2(&vSignal1);

しかし、これはにリンクする必要があります

void Read_Message_Signal(UINT8 *signal){}

これは既に実装され、dll としてコンパイルされており、これらの呼び出しは入力によって異なる場合があるため、別の呼び出しにリンクする必要があります。

この要件を達成する方法を教えてくれる人はいますか?

4

3 に答える 3

1
void Read_Message1_Signal1(&vSignal)
{
    Read_Message_Signal(&vSignal);  // or whatever
}

おそらくカスタムコードジェネレーターを使用して、他の関数名について繰り返します。

于 2011-09-20T11:49:11.973 に答える
1

独自のラッパーを作成できない理由はありますか?

void Read_Message1_Signal1(&vSignal)
{
    Read_Message_Signal(vSignal);
}

void Read_Message2_Signal2(&vSignal)
{
    Read_Message_Signal(vSignal);
}

それらがたくさんある場合は、マクロを使用してこれらを自動生成できます。

于 2011-09-20T11:51:08.767 に答える
1

そのためにプリプロセッサを使用できます。

#define Read_Message1_Signal1(x) Read_Message_Signal(x)
#define Read_Message2_Signal2(x) Read_Message_Signal(x)

または、これは奇妙に思えるので、APIを再考してください...

于 2011-09-20T11:51:34.440 に答える