当我使用-Wall选项编译时,我收到以下错误.
ghc -o -Wall polycake polycake.hs
Run Code Online (Sandbox Code Playgroud)
当我不使用该选项时,我的代码编译正常并按预期运行.这是什么意思?
<no location info>: error:
module ‘main:Polycake’ is defined in multiple files: polycake.hs
polycake.hs
Run Code Online (Sandbox Code Playgroud)
该-o选项期望输出文件名作为下一个参数 - 它不关心该参数是否以短划线开头.因此,-o -Wall将输出文件名设置为-Wall(并且实际上不启用警告).
所以左边的两个参数是polycake和polycake.hs,它ghc解释为输入文件名.如果输入文件名不存在且尚未以.hs扩展名结尾,ghc则会尝试添加该扩展名.所以ghc polycake polycake.hs会尝试编译polycake.hs两次.这会导致您的错误.
PS:输出文件名默认为没有扩展名的输入文件名,因此-o在这种情况下根本不需要该选项.
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |