0

関数名とシグネチャは同じですが、実装が異なる f1、f2、f3、f4 の 4 つのファイルがあります。

f1 : 
func1(int par1,int par2)

f2 : 
func1(int par1,int par2)


f3 : 
func1(int par1,int par2)

f4 : 
func1(int par1,int par2)

これで、バージョン ID に応じて各関数が呼び出されます。たとえば、バージョン ID が 1 の場合、ファイル 1 の func1 を呼び出します。2 の場合、ファイル 2 の func1 を呼び出します。どのように実装できますか!

バージョン ID として別の関数引数を作成しようとしましたが、受け入れられないすべての関数シグネチャを変更する必要があります。新しいクラスで、各クラスのインスタンスを作成しましたが、その純粋な C.

または、同じ #Pragma があります!

任意の入力 !

4

2 に答える 2

4

オペレーティング システムがないので、各ファイルを個別にコンパイルしてリンクし、ROM イメージにも個別に配置するしか考えられません。次に、ROM イメージからアドレスを抽出し、そのアドレスをテーブル (または何か) で使用して、呼び出しに使用します。


別の方法を考えただけで、それは関数を作成することstaticです。次に、使用できる関数ポインター構造を取得するための独自の関数を用意します。これは、ドライバーを処理するための非常に一般的な方法です。

于 2013-04-30T05:36:49.033 に答える