我正在尝试构建一个适用于多个平台和编译器的小代码。我使用断言,其中大部分都可以关闭,但是当使用pgicpp
进行编译时,使用-mp
进行OpenMP支持,它会自动使用--no_exceptions
选项:我的代码中的任何地方都带有“ throw“语句生成致命的编译器错误。 (“禁用异常处理支持”)
我可以测试一个define
d宏来隐藏PGI上的throw
语句吗?我经常使用gcc,它有GCC_VERSION
之类的东西。我在PGI中找不到任何描述这些宏的文档。
答案 0 :(得分:12)
查看Sourceforge上的Pre-defined C/C++ Compiler Macros项目。
PGI的编译器有一个__PGI
宏。
另外,请查看libnuwen's compiler.hh标头,以便“标准化”编译器版本控制宏。
答案 1 :(得分:4)
您可以尝试这样来查看编译器预定义了哪些宏:
pgcc -dM
也许这会显示出你可以使用的合适的宏。
答案 2 :(得分:0)
您是否看过提升标题?假设他们支持PGI,他们将找到一种方法来检测它。你可以用它。我会开始搜索boost/config
中的某个地方。