8

我正在尝试构建一个可以跨多个平台和编译器工作的小代码。我使用断言,其中大部分都可以关闭,但是当使用 PGI 编译时pgicpp使用-mpOpenMP 支持,它会自动使用--no_exceptions选项:在我的代码中的任何地方,带有“throw”语句的地方都会产生致命的编译器错误。(“对异常处理的支持被禁用”)

我可以测试一个defined 宏来隐藏throwPGI 上的语句吗?我通常使用 gcc,其中有GCC_VERSION之类的。我在 PGI 中找不到任何描述这些宏的文档。

4

3 回答 3

12

查看 Sourceforge 上的预定义 C/C++ 编译器宏项目。

PGI 的编译器有一个__PGI宏。

此外,请查看libnuwen 的compiler.hh 标头,以找到一种“规范化”编译器版本控制宏的体面方法。

于 2009-08-05T14:58:55.133 回答
4

你可以试试这个看看编译器预定义了哪些宏:

pgcc -dM

也许这会揭示一个你可以使用的合适的宏。

于 2009-08-05T14:06:59.017 回答
0

你看过增强头吗?假设他们支持 PGI,他们就会找到检测它的方法。你可以用那个。我会开始在boost/config.

于 2009-08-05T14:53:19.260 回答