2013-01-24 1 views
3

Où dois-je regarder si je veux basculer entre float et double précision au moment de la compilation. C'est comme, si l'utilisateur veut tout en float au lieu de double précision comment je peux maintenir cette flexibilité? En d'autres termes, comment définir une variable qui pourrait être flottante ou double précision conditionnellement?Basculer entre float et double précision au moment de la compilation

+2

Au moment de la compilation ou de l'exécution? – user7116

Répondre

13

S'il est OK pour faire le changement au moment de la compilation, un typedef simple serait faire:

#ifdef USE_DOUBLES 
typedef double user_data_t; 
#else 
typedef float user_data_t; 
#endif 

Utilisez user_data_t dans votre code et définissez USE_DOUBLES si vous voulez doubles au moment de la compilation :

g++ -DUSE_DOUBLES=1 myprogram.cpp 
+0

Compilez les deux copies, appliquez un redirecteur de script shell à l'avant et alto! – user7116

+0

@Shibli Il existe plusieurs façons. L'utilisation de l'option de compilateur '-D ...' fonctionne pour de nombreux compilateurs UNIX. Sous Windows, vous pouvez utiliser '/ D' ou ajouter' USE_DOUBLES' à la liste des définitions de préprocesseur dans les propriétés de votre projet C/C++. – dasblinkenlight

+0

J'ai mis '-DUSE_DOUBLES = 1' directement dans mon fichier make et j'ai vérifié le type d'une variable flottante. Alors, comment pouvez-vous utiliser cela pour un fichier make? – Shibli

1

Je préfère ne pas avoir #define s dans mon code.

Je voudrais avoir deux en-têtes différents avec deux typedef différents, et permettre aux options de construction de choisir quelle en-tête est incluse.

Questions connexes