Macro conditionelle? Import/Export de symboles.
Le titre est un peu abstrait mais comme je ne suis pas spécialiste des macro je ne suis pas sur de comment procéder.
Je voudrais savoir si il y a un moyen d'écrire une fonction macro prenant un paramettre qui sera utilisé pour générer un nom de macro et définir la valeur d'une autre définition macro.
Quelque chose qui ressemblerait à ça (sauf que ce code ci n'a pas le sens que je veux):
Code:
1 2 3 4 5 6
| #define GENERATE_MODULE_API( module_api_macro_name ) \
#ifdef module_api_macro_name##_EXPORTS \
#define module_api_macro_name##_API My_DllExport \
#else \
#define module_api_macro_name##_API My_DllImport \
#endif |
Je ne vois pas de façons de le faire.
Ce que j'aimerai faire c'est que chacun de mes projets DLL/SO puisse automatiquement générer une macro MON_MODULE_API qui serait l'équivalent de ceci:
Code:
1 2 3 4 5 6 7
| #ifdef MONPROJET_SYSTEM_EXPORTS
#define MONPROJET_SYSTEM_API My_DllExport
#else
#define MONPROJET_SYSTEM_API My_DllImport
#endif
#endif |
Actuellement je dois faire un header par projet qui doit contenir ce code ci dessus (avec le nom du projet changé à chaque fois).
Si vous avez une manière de le faire plus générique, je suis preneur.