" os"有什么可能的值?函数来自标准库中的System.Info包吗?
另外:这些值是否可靠,是否可以在多个编译器中移植? Windows上的Hugs会在Windows上返回与ghc相同的值吗?
是否有更好的方法来嗅探操作系统?
答案 0 :(得分:6)
GHC的变量取自“autotools”工具套件,该工具套件生成众所周知的“配置”脚本,这些脚本几乎总是在编译某些内容时使用(./configure; make; make install
)。 configure
对C编译器使用标准的“编译器标识字符串”,如x86_64-unknown-linux-gnu
,另外还计算一组更详细的标识主机平台的变量。这些变量用于生成的GHC Makefile
,此文件进一步生成您在ghcplatform.h
文件中看到的Info.hs
文件。
几乎完全相同的程序被HUGS用来获取平台变量,除了头文件的命名方式不同(正如您在链接的源代码中看到的那样)。
由于Windows上的GHC和HUGS98都是使用MinGW和autotools编译的,因此变量在该平台上是一致的。