2009-09-04 12 views
0

私の実装では、アプリケーションが実行されているオペレーティングシステムの を指定するプリプロセッサ定義があります。 OS_WINまたはOS_LINUX。インタフェースの実装の指定

ヘッダーファイルでは、インターフェイスを定義しました。これは、各操作 システムで同じです。

//interface.h: 

void functionA(); 
void functionB(); 

また、各オペレーティングシステム用のインターフェイスの実装もあります。

//windows_interface.c: 

#include "interface.h" 
void functionA(){ 
//do something in windows 
} 
void functionB(){ 
//do something in windows 
} 

//linux_interface.c: 

#include "interface.h" 
void functionA(){ 
//do something in linux 
} 
void functionB(){ 
//do something in linux 
} 

最後に質問;)。 OS_WINプリプロセッサが設定されているときにwindows_interfaceの実装をどのように使うことができますか?OS_LINUXが定義されているときにlinux_interface.cを使うにはどうすればいいですか? プリプロセッサコマンド?

答えて

3

プラットフォーム単位のCファイルを直接コンパイルしないでください。代わりに、

#if OS_WIN 

#include "windows_interface.c" 

#elif OS_LINUX 

#include "linux_interface.c" 

#else 

#error "Need to implement an interface for this platform!" 

#endif 

を含むファイルinterface.cを作成してコンパイルしてください。

また、Cコード自体からコンパイルするCコードのセットを選択しないでください。ビルドを制御しているスクリプトまたはmakefileで実行します。ファイルを1つ

+0

いいですね。どうもありがとう! –

0

あなたのサラウンドと全体コード:

#ifdef OS_WIN 
… 
#endif 

およびその他における:

#ifdef OS_LINUX 
… 
#endif 

そして、あなたは両方のファイルをコンパイルします。それが最も簡単な解決策になると私は思う。

関連する問題