当使用-F-pgmF调用Haskell自定义预处理器时,前两个参数之间的区别是什么?
发件人: 使用-pgmF cmd选择要用作预处理器的程序。什么时候 调用时,cmd预处理器上至少有三个参数 它的命令行:第一个参数是原始文件的名称 源文件,第二个是保存输入的文件的名称,以及 第三个是cmd应该在其中写入其输出的文件名 对 我试图编写一个示例预处理器,以了解传递给预处理器的三个参数之间的区别 我有以下两个文件: Main.hs当使用-F-pgmF调用Haskell自定义预处理器时,前两个参数之间的区别是什么?,haskell,ghc,Haskell,Ghc,发件人: 使用-pgmF cmd选择要用作预处理器的程序。什么时候 调用时,cmd预处理器上至少有三个参数 它的命令行:第一个参数是原始文件的名称 源文件,第二个是保存输入的文件的名称,以及 第三个是cmd应该在其中写入其输出的文件名 对 我试图编写一个示例预处理器,以了解传递给预处理器的三个参数之间的区别 我有以下两个文件: Main.hs {-#OPTIONS_GHC-F-pgmF preprocess.sh} 预处理.sh #/垃圾箱/垃圾箱 echo$1“-原始源文件” echo$2“
{-#OPTIONS_GHC-F-pgmF preprocess.sh}
预处理.sh
#/垃圾箱/垃圾箱
echo$1“-原始源文件”
echo$2“-保存输入的文件”
echo$3”--cmd应将其输出写入的文件
echo“{-#第1行\“$2\”#-}\n main=return()”>$3
当我使用ghc
编译Haskell文件时,我得到以下输出:
Main.hs -- the original source file
Main.hs -- file holding the input
/tmp/ghc13496_0/ghc_1.hspp -- the file where cmd should write its output to
前两个参数是否应该始终相同?在哪些情况下,它们可以有不同的值?我打赌在堆叠预处理器时它们会有所不同。@Carl您能提供一个如何堆叠预处理器的示例吗?例如,启用
CPP
扩展。