检测与#ifdef来编译(Detect compiler with #ifdef)

2019-06-28 01:46发布

我试图建立一个小的代码可以跨多个平台和编译器的工作原理。 我使用断言,其中大部分可以被关闭,但与PGI的编译时pgicpp使用-mp用于支持OpenMP,它会自动使用--no_exceptions选项:无处不在我的代码以“扔”语句生成一个致命编译器错误。 (“异常处理支持已禁用”)

是否有一个define d宏我可以测试隐藏throw在PGI报表? 我通常用gcc,其中有工作GCC_VERSION等。 我找不到描述PGI这些宏的任何文件。

Answer 1:

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

PGI的编译器有一个__PGI宏。

另外,看看libnuwen的 compiler.hh头一个体面的方式来“正常化”的编译器版本宏。



Answer 2:

你可以试试这个,看看编译器预定义宏什么:

pgcc -dM

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



Answer 3:

你看着升压头? 假如他们支持PGI,他们将找到一种方法来检测它。 你可以使用它。 我将开始在地方搜索boost/config



文章来源: Detect compiler with #ifdef