代码之家  ›  专栏  ›  技术社区  ›  Seth Johnson

用ifdef检测编译器

  •  8
  • Seth Johnson  · 技术社区  · 15 年前

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

    有没有 define 我可以测试隐藏 throw 关于PGI的声明?我通常和GCC合作 GCC_VERSION 诸如此类。我在PGI中找不到任何描述这些宏的文档。

    3 回复  |  直到 9 年前
        1
  •  12
  •   Michael Burr    15 年前

    看看 Pre-defined C/C++ Compiler Macros SourceForge上的项目。

    PGI的编译器具有 __PGI 宏。

    另外,看看 libnuwen's compiler.hh头,用于“规范化”编译器版本宏。

        2
  •  4
  •   Ville Laurikari    15 年前

    您可以尝试此操作查看编译器预定义的宏:

    pgcc -dM
    

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

        3
  •  0
  •   sbi    15 年前

    你看过Boost的头条了吗?假设他们支持PGI,他们就会找到一种检测它的方法。你可以用那个。我会开始搜索 boost/config .