Erkennen-compiler mit #ifdef
Ich versuche zu bauen, ein kleiner code, der funktioniert auf mehreren Plattformen und Compiler. Ich benutze Behauptungen, von denen die meisten kann ausgeschaltet werden, aber beim kompilieren mit pgis pgicpp
mit -mp
für die OpenMP-Unterstützung, es verwendet automatisch die --no_exceptions
option: überall in meinem code mit einer "throw" - Anweisung erzeugt ein compiler fatal error. ("support für die Ausnahmebehandlung ist deaktiviert")
Gibt es eine define
d makro kann ich testen, um zu verbergen die throw
Aussagen zu PGI? Normalerweise arbeite ich mit gcc, die GCC_VERSION
und dergleichen. Ich finde keine Dokumentation zur Beschreibung dieser Makros in PGI.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf die Pre-defined C/C++ - Compiler Makros Projekt auf Sourceforge.
PGI-compiler hat eine
__PGI
makro.Werfen Sie auch einen Blick auf libnuwen ist compiler.hh-header für eine anständige Weise zu "normalisieren" - compiler, Versionsverwaltung Makros.
Könnten Sie versuchen, das zu sehen, was Makros sind vordefiniert durch den compiler:
Vielleicht, die zeigen wird, ein geeignetes makro Sie verwenden können.
Haben Sie schaute auf die boost-Header? Angenommen, Sie unterstützen PGI, Sie haben einen Weg gefunden, es zu erkennen. Sie verwenden konnten. Würde ich beginnen zu suchen, irgendwo in
boost/config
.