Próbuję utworzyć niewielki kod działający na wielu platformach i kompilatorach. Używam asercji, z których większość można wyłączyć, ale podczas kompilacji z PGI pgicpp
przy użyciu -mp
dla obsługi OpenMP, automatycznie korzysta z opcji --no_exceptions
: wszędzie w moim kodzie z instrukcją "throw" generuje fatalny błąd kompilatora. ("obsługa obsługi wyjątków jest wyłączona")Wykryj kompilator z #ifdef
Czy istnieje define
d makro Czy mogę przetestować, aby ukryć oświadczenia throw
o PGI? Zwykle pracuję z gcc, który ma GCC_VERSION
i tym podobne. Nie mogę znaleźć dokumentacji opisującej te makra w PGI.
clang http://stackoverflow.com/questions/2658461/what-predefined-macro-can-i-use-to-detect-clang | VC http://stackoverflow.com/questions/15127522/how-to-ifdef-by-compilertype-gcc-or-vc –