C 17是否提供了跨平台方案来记录编译器版本和Fortran等选项?

现代Fortran提供了一些跨平台机制来记录用于构建应用程序的编译器版本和设置. C 17有哪些方法可以捕获这些信息? Horton和Van Weert的书,Beginning C++17,似乎没有解决这个问题.

Fortran工具在下面进行了调查.

1.访问编译器版本和选项

Fortran中的iso_fortran_env提供了访问编译器版本和用于编译代码的设置的标准方法.随后是一个示例代码段.

代码示例

program check_compiler

use, intrinsic :: iso_fortran_env, only : compiler_options, compiler_version

implicit none

    write ( *, 100 ) "compiler version = ", compiler_version ()
    write ( *, 100 ) "compiler options = ", trim ( compiler_options () )

 100  format ( A, A, / )
      stop "normal termination . . ."

end program check_compiler

样本输出

$gfortran -o check_compiler check_compiler.f08 
$./check_compiler
compiler version = GCC version 8.0.0 20170604 (experimental)

compiler options = -fPIC -mmacosx-version-min=10.12.7 -mtune=core2

STOP normal termination . . .

2.探测主机操作系统并与之交互

诸如execute_command_line,get_command和get_environment_variable之类的Fortran命令提供了另一条在编译时记录信息的路径.

解决方法:

搜索C++20 standard draft, which is available in GitHub,我找到no results用于密切定位的“编译器”和“版本”,我也没有找到类似这样的标准文本.

C 20此时仍然非常接近C 17,当然这种机制还没有被删除,所以我认为在C 20中没有这样的东西是非常安全的.

上一篇:c – 找不到stdarg.h


下一篇:静态编译libmagic(c / c文件类型检测)