J'essaie de créer un petit code qui fonctionne sur plusieurs plates-formes et compilateurs. J'utilise des assertions, dont la plupart peuvent être éteintes, mais lors de la compilation avec la compilation de PGI code> PGICPP code> à l'aide de Y a-t-il un -mp code> pour OpenMP support, il utilise automatiquement le
- no_exceptions < / Code> Option: partout dans mon code avec une instruction "lancer" génère une erreur de compilateur fatale. ("La prise en charge du traitement des exceptions est désactivée") p>
définir code> D macro i peut tester pour masquer les instructions code> lancer code> sur pgi? Je travaille habituellement avec GCC, qui a
gcc_version code> et similaire. Je ne trouve aucune documentation décrivant ces macros en PGI. P>
3 Réponses :
Vous pouvez essayer ceci pour voir quelles macros sont prédéfinies par le compilateur: peut-être que cela révélera une macro appropriée que vous pouvez utiliser. p> p>
En effet. La sortie de celle-ci est affichée à pgroup.com/support/tprs_70.htm , et Il y a PGI (mentionné ci-dessus) et __PGIC B>, PGIC_MINOR B> et PGIC_PATCHLEVEL B>, qui donnent les parties majeures, mineures et de patte de la version du compilateur numéro.
Et il y a la joie de l'analyseur prenant des doubles traits de soulignement et de faire des choses divertissantes avec eux. 'PGI' est préfixé avec double soulignement; Les trois autres sont à la fois préfixés et suffixés avec eux.
Avez-vous regardé les en-têtes Boost? En supposant qu'ils soutiennent PGI, ils auront trouvé un moyen de le détecter. Vous pouvez utiliser cela. Je commencerais à rechercher quelque part dans boost / config code>. p>
Jetez un coup d'œil au Macros de compilateur C / C ++ prédéfini Projet sur Sourceforge. < / p>
compilateur de PGI a un Aussi, jetez un coup d'œil à en-tête de compiler.hh de libnuwen pour une manière décente de "normaliser" compilateur Macros Versioning. P> __ pgi code> macro. p>
Deuxième lien est mort :(
clang Stackoverflow.com/questions/2658461/... | Vc Stackoverflow.com / Questions / 15127522 / ...