2009-09-04 7 views
0

Dans ma mise en œuvre, j'ai une définition de préprocesseur qui spécifie le système d'exploitation sur lequel l'application s'exécute, par ex. OS_WIN ou OS_LINUX.Spécification de la mise en œuvre de l'interface

Dans un fichier d'en-tête, j'ai défini l'interface, qui est la même pour chaque système en fonctionnement. J'ai aussi les implémentations pour l'interface pour chaque système d'exploitation, par exemple.

//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 
} 

Et maintenant enfin la question;). Comment puis-je utiliser maintenant l'implémentation windows_interface lorsque le préprocesseur OS_WIN est défini et comment puis-je utiliser linux_interface.c lorsque OS_LINUX est défini comme commande de préprocesseur?

Répondre

3

Ne compilez pas les fichiers C par plate-forme directement. Au lieu de cela, créez un fichier, interface.c, qui contient

et de compiler cela.

Alternativement - et mieux encore - ne sélectionnez pas l'ensemble de code C à compiler à partir du code C lui-même - faites-le dans le script ou makefile qui contrôle la construction.

+0

Cela semble bien. Merci beaucoup! –

0

Dans un fichier surround avec tout le code:

#ifdef OS_WIN 
… 
#endif 

et dans l'autre:

#ifdef OS_LINUX 
… 
#endif 

Et puis vous compilez les deux fichiers. Ce serait la solution la plus simple, je pense.