当我使用 -Wall 选项编译时出现以下错误。
ghc -o -Wall polycake polycake.hs
当我不使用该选项时,我的代码可以正常编译并按预期运行。这是什么意思?
<no location info>: error:
module ‘main:Polycake’ is defined in multiple files: polycake.hs
polycake.hs
最佳答案
-o
选项期望输出文件名作为下一个参数 - 它不关心该参数是否以破折号开头。所以 -o -Wall
将输出文件名设置为 -Wall
(实际上并没有启用警告)。
所以剩下的两个参数是 polycake
和 polycake.hs
,ghc
将其解释为输入文件名。当输入文件名不存在且未以 .hs
扩展名结尾时,ghc
将尝试添加该扩展名。所以 ghc polycake polycake.hs
会尝试编译 polycake.hs
两次。这会导致您的错误。
PS:输出文件名默认为不带扩展名的输入文件名,所以在这种情况下你根本不需要-o
选项。
关于haskell - "module [...] is defined in multiple files"Haskell 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49336583/